課程
/后端開發(fā)
/C
/Linux C語言指針與內(nèi)存
str3長度是10,為什么輸入那么多a,還能全都輸出,不應(yīng)該是9個(gè)a嗎?
2017-04-29
源自:Linux C語言指針與內(nèi)存 5-4
正在回答
其實(shí)吧,給char數(shù)組賦值時(shí),是一個(gè)char一個(gè)char賦的,
雖然規(guī)定的是寬度是10,但只是規(guī)定了str3最后一個(gè)char即str3[9]為'\0',
當(dāng)我們手工賦值時(shí),賦了一大串的a,如:str3[0]='a',str3[1]='a'...str3[9]='a',str3[10]='a'...,在這里就把str3[9]給改成了'a'
輸出時(shí),其實(shí)是指針的移動(dòng),在沒遇到'\0'前是一直不會(huì)結(jié)束的,在內(nèi)存中大多數(shù)空間都為'\0',所以可以結(jié)束輸出,即題主所給出的圖片所示,
當(dāng)然,有時(shí)候遇到了不是'\0'的,會(huì)把它的ascii碼輸出,如:在這一串a(chǎn)最后下一個(gè)字節(jié)中存的是'b',而再下一個(gè)是'\0'的話,就會(huì)輸出一大串a(chǎn)加上一個(gè)b后結(jié)束輸出
舉報(bào)
指針-C語言的核心,代領(lǐng)大家對c語言有更加深刻的理解
4 回答str3 為什么只打印 9個(gè)a 不是有25個(gè)a 前面占用了6個(gè) 那不是還有19個(gè)a 19個(gè)a不是也把str3【10】占用了
1 回答最后輸出str[7]應(yīng)該是a才對吧?因?yàn)閟tr接下去就是str3了
2 回答為什么第一個(gè)p a p b是輸出的值第二次輸出它的地址呢?
2 回答如果int a = 3; 那么int *p=&a;之后 是不是*p=3,p=&a 呢?
1 回答為什么i的輸出位置在a之后,而且i=1?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2017-04-29
其實(shí)吧,給char數(shù)組賦值時(shí),是一個(gè)char一個(gè)char賦的,
雖然規(guī)定的是寬度是10,但只是規(guī)定了str3最后一個(gè)char即str3[9]為'\0',
當(dāng)我們手工賦值時(shí),賦了一大串的a,如:str3[0]='a',str3[1]='a'...str3[9]='a',str3[10]='a'...,在這里就把str3[9]給改成了'a'
輸出時(shí),其實(shí)是指針的移動(dòng),在沒遇到'\0'前是一直不會(huì)結(jié)束的,在內(nèi)存中大多數(shù)空間都為'\0',所以可以結(jié)束輸出,即題主所給出的圖片所示,
當(dāng)然,有時(shí)候遇到了不是'\0'的,會(huì)把它的ascii碼輸出,如:在這一串a(chǎn)最后下一個(gè)字節(jié)中存的是'b',而再下一個(gè)是'\0'的話,就會(huì)輸出一大串a(chǎn)加上一個(gè)b后結(jié)束輸出