鱼C论坛

 找回密码
 立即注册
查看: 2407|回复: 7

关于指针的问题

[复制链接]
发表于 2019-6-30 19:07:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问下各位大佬,这两个程序的区别在哪里,传值和传址总是不太清除,请大佬们解答,越详细越好,谢谢各位了!!!
QQ图片20190630190407.png
QQ图片20190630190456.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-30 19:42:58 | 显示全部楼层
先理清楚几点概念,
第一,可以把 “地址和地址所指向的内容” 比喻为 “钥匙和抽屉”,只有对应的钥匙才能开对应的抽屉。
加个*就是取出抽屉中的东西。那么钥匙是固定的,但抽屉可以存任何东西。
第二,函数调用时参数的传递是“复制”。

区别在于第一个程序虽然把指针变量q传进了函数,复制给了p,但是无奈他是复制进去的,在函数中改变他对原先的q并无影响;
而第二个程序虽然将q复制给了p,但是通过p间接的找到了原来的a,所以能够将其改变。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-30 21:30:01 | 显示全部楼层
newu 发表于 2019-6-30 19:42
先理清楚几点概念,
第一,可以把 “地址和地址所指向的内容” 比喻为 “钥匙和抽屉”,只有对应的钥匙才 ...

第一个我理解了是复制的,所以并无影响。但是第二个程序我不太明白为什么能找到原来的a,并修改呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-30 21:42:09 | 显示全部楼层
Ru1 发表于 2019-6-30 21:30
第一个我理解了是复制的,所以并无影响。但是第二个程序我不太明白为什么能找到原来的a,并修改呢?

因为:
q = &a; //把a的地址(a的钥匙)给了q
fun(q); //把q复制给了p(p也有了和a一样的钥匙)
*p = 22; //此时通过*p(加个*开锁)然后把22放进去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-30 22:09:52 From FishC Mobile | 显示全部楼层
真的非常谢谢您的解答,十分生动形象,那第一个程序中p有了a的钥匙以后,是理解成把22放了进去,还是理解成换成了b的钥匙,然后把22放了进去呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-2 16:25:02 | 显示全部楼层
newu 发表于 2019-6-30 19:42
先理清楚几点概念,
第一,可以把 “地址和地址所指向的内容” 比喻为 “钥匙和抽屉”,只有对应的钥匙才 ...

"钥匙和抽屉",生动形象的比喻,大赞,又学到一招。

我以前用 妹纸房间和妹纸房间地址号打比喻,遭到了妹纸的强烈反对。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-2 16:40:45 | 显示全部楼层
Ru1 发表于 2019-6-30 22:09
真的非常谢谢您的解答,十分生动形象,那第一个程序中p有了a的钥匙以后,是理解成把22放了进去,还是理解成 ...

我怎么才看到你的回复,记得一定要点回复我才能收到通知哦,
第一个程序是复制了钥匙,他的操作都是在复制的钥匙上进行的,并没有开锁,所以不会改掉原来的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-2 16:42:30 | 显示全部楼层
风扫地 发表于 2019-7-2 16:25
"钥匙和抽屉",生动形象的比喻,大赞,又学到一招。

我以前用 妹纸房间和妹纸房间地址号打比喻,遭到了 ...

哈哈不是我的原创哈,这是传智扫地僧的发明。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 23:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表