課程
/后端開發(fā)
/C
/Linux C語言指針與內(nèi)存
這就是代碼
2016-03-26
源自:Linux C語言指針與內(nèi)存 5-2
正在回答
我按樓主程序運(yùn)行,在Linux下同樣出現(xiàn)相同的情況,執(zhí)行到循環(huán)時,gdb也不能打出值來。換了c-free ,第三個輸出就出現(xiàn)莫名的值,我認(rèn)為這是編譯器的問題。
*p = 2
*p = 1
*p = 5
*p = 1417759240
*p = 32767
*p = 10
*p = 100
*p = 0
-----------------
p[0]=2
p[1]=1
p[2]=5
p[3]=1417759228
p[4]=32767
p[5]=1
p[6]=10
p[7]=100
p[8]=0
刪掉p[3]=101這條語句后的運(yùn)行結(jié)果如上,由結(jié)果可知,p[3]、p[4]都指向了系統(tǒng)分配的存儲其他數(shù)據(jù)的內(nèi)存空間,是不可操作的,p[5]指向了array[0],可以改變其中的值。所以會出現(xiàn)崩潰的現(xiàn)象。至于系統(tǒng)為什么這么分,我猜測是編譯優(yōu)化的結(jié)果,如果還有別的解釋,歡迎交流。
舉報
指針-C語言的核心,代領(lǐng)大家對c語言有更加深刻的理解
3 回答我想了解的是為什么指針指向常量的地址,輸出值時,地址是常量的地址,結(jié)果卻不一樣,我知道常量不能修改,但是為什么會有這種情況?
3 回答不是很分得清什么樣的情況存儲在代碼段內(nèi)存,什么樣的在棧內(nèi)存?請大神講解。
1 回答求問,為什么調(diào)試時print出來的值是這個?????
1 回答為啥地址中是a i b這種格式啊。
1 回答這什么?這什么?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-09-25
我按樓主程序運(yùn)行,在Linux下同樣出現(xiàn)相同的情況,執(zhí)行到循環(huán)時,gdb也不能打出值來。換了c-free ,第三個輸出就出現(xiàn)莫名的值,我認(rèn)為這是編譯器的問題。
2016-04-06
*p = 2
*p = 1
*p = 5
*p = 1417759240
*p = 32767
*p = 1
*p = 10
*p = 100
*p = 0
-----------------
p[0]=2
p[1]=1
p[2]=5
p[3]=1417759228
p[4]=32767
p[5]=1
p[6]=10
p[7]=100
p[8]=0
刪掉p[3]=101這條語句后的運(yùn)行結(jié)果如上,由結(jié)果可知,p[3]、p[4]都指向了系統(tǒng)分配的存儲其他數(shù)據(jù)的內(nèi)存空間,是不可操作的,p[5]指向了array[0],可以改變其中的值。所以會出現(xiàn)崩潰的現(xiàn)象。至于系統(tǒng)為什么這么分,我猜測是編譯優(yōu)化的結(jié)果,如果還有別的解釋,歡迎交流。