#include <stdio.h>#include <string.h>void main(){char x[]={0xBC,0xDD,0xCA};int len=strlen(x);printf("%d\r\n",len);}
2 回答

白衣染霜花
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
sizeof(x)應(yīng)該是3
strlen(x)就不一定,因?yàn)閟trlen()計(jì)算數(shù)組元素個(gè)數(shù)直到遇到'\0'。顯然在索引前3個(gè)元素時(shí)并沒有遇到'\0',因此編譯器會(huì)繼續(xù)越界索引。

HUWWW
TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
strlen是遇到 '\0' 算有多少個(gè)字節(jié)的,顯然,x[]根本沒有一個(gè)值是0,因此strlen是任意的,要想得到3,應(yīng)該用sizeof
- 2 回答
- 0 關(guān)注
- 139 瀏覽
添加回答
舉報(bào)
0/150
提交
取消