2 回答

德瑪西亞99
TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
字符串和字符數(shù)組的區(qū)別:字符串用字符數(shù)組保存,表示的是字符數(shù)組首地址到第一個(gè)'\0'為止的內(nèi)容。
你的程序里,strlen(a)等于7,其實(shí)是strlen越界訪問(wèn)了。在a的4個(gè)字節(jié)后面,有一些未使用的內(nèi)存,那邊前3個(gè)字節(jié)非0,第4個(gè)字節(jié)是0,所以合起來(lái)'\0'前面有7個(gè)非0字符。

烙印99
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
簡(jiǎn)單說(shuō),字符串本質(zhì)就是字符數(shù)組
如字符串“abcd”=字符數(shù)組{'a','b','c','d','\0'}
'\0'是結(jié)束符,不計(jì)入字符數(shù),所以strlen(b)=4
strlen(a)=7的原因是原數(shù)組無(wú)結(jié)束符,而'd'之后的值是隨機(jī)的、未知的,剛好第八個(gè)值是'\0’
添加回答
舉報(bào)
0/150
提交
取消