指针在函数里换了指向地址,回到主函数中还是交换的状态吗

img


我的理解是在函数中它交换了指针的指向,是函数结束后就变回原来的指向了吗?
然后如果在函数内定义一个常量,再交换,是交换了指针指向的值吗?函数结束后交换的值为什么不会变回主函数原本的值呢?

要理解这一点,你要理解值传递和地址传递的区别
值传递是将数值复制一份,将复制出的副本传入函数
所以如果使用

fun(int a){
a = 3;}

这种写法,函数内的操作不会对函数外的原值产生影响
而地址传递是将变量所在的内存位置传给函数,函数对该位置的修改是直接访问了原数据所在内存,所以函数内的修改会反映到函数外

fun(int *a){
*a = 3;}

有帮助望采纳~

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632