C++中数组strlen
黄舟
黄舟 2017-04-17 15:04:59
0
4
556
char a[] = {'a','b','c'};
cout << strlen(a) << endl;
输出 6

char a[3] = {'a','b','c'};
cout << strlen(a) << endl;
输出 6

char a[4] = {'a','b','c'};
cout << strlen(a) << endl;
输出 3

strlen 会一直往前找直到找到'\0',但是为什么第一第二个会返回 6 呢?
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(4)
迷茫

對無

刘奇

先分析您的程式碼:

雷雷

進一步理解

雷雷 雷雷

strlen 說明

取得字串長度

傳回 C 字串 str 的長度。

C 字串的長度由終止空字元決定:C 字串的長度等於字串開頭和終止空字元之間的字元數(不包括終止空字元本身)。

這不應該與保存字串的陣列的大小混淆。例如:

char mystr[100]="測試字串";

定義了一個大小為100個字元的字元數組,但是初始化mystr的C字串的長度只有11個字元。因此,雖然 sizeof(mystr) 的計算結果為 100,但 strlen(mystr) 傳回 11。

左手右手慢动作

字元數組是字元數組,字串是字串。只有字串才有

被踩了一下…可能踩我的人認為,當數組的長度大於字串實際長度時,編譯器會自動在字串末尾添加
小葫芦

雷雷

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板