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ā)生變化呢。我把你寫(xiě)的change修改下,這樣才能改變*pa的值,即變量a的值。
void?change(int?*p)
{
????int?b?=?3;
????*p?=?b;
????printf("%d\n",?*p);
}建議:好好看下書(shū),看下函數(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)注
- 1725 瀏覽
添加回答
舉報(bào)
