在c语言中实参和形参之间的数据傳输是单向的“值传递”方式也就是实参可以影响形参,而形参不能影响实参指针变量作为参数也不例外,但是可以改变实参指针变量所指向的变量的值
第一个swap1函数运行结果是:x=2 y=1.但是第一个函数的形参是(int x,int y),实参是(int a,int b)因为实参可以影响形参,而形参不可以影响实参所鉯a,b的值是不变的如图:
第二个swap2函数由图可知,pa和px都是a的地址pb和py都是b的地址。此函数改变*px,*py的值因为*px和a在同一储存单元,*py和b在同一储存单元以改变实参指针变量所指向的变量的值。所以如图*pa和*pb的值也改变了最后输出结果也就改变了。
第三个swap3同样的道理如上图直接妀变了形参指针px和py的值,改变的只是地址地址所对应的值没有改变,又因为形参是不会影响实参所以pa和pb没有改变。所以ab值没有改变。