有没有哪位告诉我第一个咋错的吗,我不懂这里为什么要用指针,初学者,我觉得第一个就是对的呀
2条回答 默认 最新
- 技术专家团-小桥流水 2021-11-03 22:38关注
解释如下:
函数在传参的时候,会进行一次复制。 在main函数中调用swap(int x,int y)函数时,会把a和b的值传入swap函数, 这时候,编译器会进行一次拷贝(先定义变量x和y,然后让x=a,y=b) 因为是临时变量,x和a的地址是不同的,y和b的地址也是不同的, 在swap函数中操作的是x和y,x和y是a和b的拷贝,跟a和b是独立的,所以对a和b没有影响。 ----------------------------------------分割线---------------------------------------------------- 而对于swap(int* x,int *y)函数来说,传入的是a和b的地址, swap函数仍然会进行一次复制,x = &a,y=&b,这时候x和y分别是a和b的地址, 也就是说,在swap函数中操作的是a和b的内存,所以虽然在传参时进行了一次复制, 但是x指向了a的内存,y指向了b的内存,所以,在swap中对x和y的内存数据进行操作的时候, 会对a和b的值产生影响。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算
- ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
- ¥20 有人知道这种图怎么画吗?
- ¥15 pyqt6如何引用qrc文件加载里面的的资源
- ¥15 安卓JNI项目使用lua上的问题
- ¥20 RL+GNN解决人员排班问题时梯度消失
- ¥60 要数控稳压电源测试数据
- ¥15 能帮我写下这个编程吗
- ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路