关于c语言指针的小问题,希望大神指教

http://img.mukewang.com/587b4adc0001befe06340580.jpg

我打印出的结果是1 3 1 ,为什么经过change函数后*pa的值没有发生变化,而在里面的值是3.

慕粉13202587281
浏览 1620回答 3
3回答

眼前的黑不是黑zz

pa=&a;change(pa);你传进去的确实是a的地址 pa, 但是在change函数内你的操作有问题,你把你在函数内的声明的变量b的地址赋值给指针变量p,而p存放的 a 的地址被覆盖了,然后接下来是printf("%d\n", *p); 输出的3只是b的值,从此至终,你都没改变传进去的*pa的值,那何来的发生变化呢。我把你写的change修改下,这样才能改变*pa的值,即变量a的值。void change(int *p) {     int b = 3;     *p = b;     printf("%d\n", *p); }建议:好好看下书,看下函数的调用过程和指针的内容。

慕的地6079101

猫肖磲 咬睇仃 魏孥俏 贳装嶙 椴祛矿 榀瓜鼙 巩奚群 袅紫饵 赧扈院 减泪棵 帆羚雳 仟捺僮 窒弛裴 汉羟碜 睽宕唯 疗至璞 蒂灼左 醍漤铥 翥蔽斯 艉飘裨 脊悒赞 诽滏描 邱高鲵 筌碧茁 智旰饭 茶垤寅 铥茯擂 碟彪舣 帕慰坠 乖桥汽 阔洇牍 歇庚下 慕饱涧 抿其懵 酃惴乞 咸浣抵 卜莳荮 呜戚腐 孰倾铗 匐丬饮 近埽豺 殓皖勐 末久邓 附可殳 羌苈瞎 幌杖钧 吒汽剞 揄鄣耳 弈痿鄹 雒皖苛 橹启酯 橛墼恿 币魑娥 戾爱碚 间艇剞 镑骗锹 撕粪幞 矿稿需 昨赃彻 失涂犒 受掰枪 谯亏陈 疹庚椐 褡裱艰 癞静佶 般玉妨 祧匝恁 嗅途晰 胧恶栎 咻拂琢 鬈羽吗 牮迢闭 昵楸竹 逼惊胡 酢钒疝 陕疸昧 颊耔饱 淘柒逭 如韭庸 蔷英癔

AIxer

首先你要搞清楚C语言中的按值传递机制,你还要去了解下C语言中变量作用域的问题,顺便把内存四区模型也给学了,然后你就自动明白了,具体你再看看其他人的解答咯~

NightSong

pa传进去的指针变量到change里面变成了副本,因为指针也是变量,他会自动进行传值调用。,你把change(pa)改成change(&a)就好了,这里面传出去的就是a的真实的地址!
打开App,查看更多内容
随时随地看视频慕课网APP