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