C函数指针参数指针函数

 

在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值没有改变。

*p1与*p2这个星号不同于变量定义的煋号,这个是地址求值
也就是得到p1指向的变量

这个swap没有交换指针,交换的是指针指向存储单元的值本来p1存储的是a,p2是b交换以后,存儲的是ba

0

;问题解决后请采纳答案;如果自己找到解决方案,也可以

抄袭、复制答案以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号是时候展现真正的技术了!

我要回帖

更多关于 C函数指针 的文章

 

随机推荐