3 回答

TA貢獻(xiàn)57條經(jīng)驗(yàn) 獲得超42個(gè)贊
pa=&a;
change(pa);
你傳進(jìn)去的確實(shí)是a的地址 pa, 但是在change函數(shù)內(nèi)你的操作有問(wèn)題,你把你在函數(shù)內(nèi)的聲明的變量b的地址賦值給指針變量p,而p存放的 a 的地址被覆蓋了,然后接下來(lái)是printf("%d\n", *p); 輸出的3只是b的值,從此至終,你都沒(méi)改變傳進(jìn)去的*pa的值,那何來(lái)的發(fā)生變化呢。我把你寫的change修改下,這樣才能改變*pa的值,即變量a的值。
void?change(int?*p) { ????int?b?=?3; ????*p?=?b; ????printf("%d\n",?*p); }
建議:好好看下書,看下函數(shù)的調(diào)用過(guò)程和指針的內(nèi)容。

TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超1個(gè)贊

TA貢獻(xiàn)22條經(jīng)驗(yàn) 獲得超13個(gè)贊

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
pa傳進(jìn)去的指針變量到change里面變成了副本,因?yàn)橹羔樢彩亲兞?,他?huì)自動(dòng)進(jìn)行傳值調(diào)用。,你把change(pa)改成change(&a)就好了,這里面?zhèn)鞒鋈サ木褪莂的真實(shí)的地址!
- 3 回答
- 0 關(guān)注
- 1698 瀏覽
添加回答
舉報(bào)