第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于c語言指針的小問題,希望大神指教

關于c語言指針的小問題,希望大神指教

C
慕粉13202587281 2017-01-15 18:13:30
我打印出的結果是1 3 1 ,為什么經(jīng)過change函數(shù)后*pa的值沒有發(fā)生變化,而在里面的值是3.
查看完整描述

3 回答

已采納
?
眼前的黑不是黑zz

TA貢獻57條經(jīng)驗 獲得超42個贊

pa=&a;

change(pa);

你傳進去的確實是a的地址 pa, 但是在change函數(shù)內(nèi)你的操作有問題,你把你在函數(shù)內(nèi)的聲明的變量b的地址賦值給指針變量p,而p存放的 a 的地址被覆蓋了,然后接下來是printf("%d\n", *p); 輸出的3只是b的值,從此至終,你都沒改變傳進去的*pa的值,那何來的發(fā)生變化呢。我把你寫的change修改下,這樣才能改變*pa的值,即變量a的值。

void?change(int?*p)
{
????int?b?=?3;
????*p?=?b;
????printf("%d\n",?*p);
}

建議:好好看下書,看下函數(shù)的調用過程和指針的內(nèi)容。

查看完整回答
1 反對 回復 2017-01-15
  • 慕粉13202587281
    慕粉13202587281
    函數(shù)里面的p = &b不就是把a的地址賦值給pa,那*pa的值不就改變了嗎
  • 慕粉13202587281
    慕粉13202587281
    是b的地址賦值給pa
  • 眼前的黑不是黑zz
    眼前的黑不是黑zz
    第一,你不要說什么*pa的值,是a的值,你想改變的就是變量a的值,pa是指針,存放a的地址罷了, 第二,糾正,是b的地址賦值給p,不是pa,所以a的值沒改變。
點擊展開后面3
?
AIxer

TA貢獻22條經(jīng)驗 獲得超13個贊

首先你要搞清楚C語言中的按值傳遞機制,你還要去了解下C語言中變量作用域的問題,順便把內(nèi)存四區(qū)模型也給學了,然后你就自動明白了,具體你再看看其他人的解答咯~
查看完整回答
反對 回復 2017-01-15
?
NightSong

TA貢獻1條經(jīng)驗 獲得超0個贊

pa傳進去的指針變量到change里面變成了副本,因為指針也是變量,他會自動進行傳值調用。,你把change(pa)改成change(&a)就好了,這里面?zhèn)鞒鋈サ木褪莂的真實的地址!

查看完整回答
反對 回復 2017-01-15
  • AIxer
    AIxer
    恐怕改為change(&a)也不一定能得到想要的結果~,b不是全局變量
  • NightSong
    NightSong
    你很棒棒噢,我的哥
  • 3 回答
  • 0 關注
  • 1683 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號