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 呢?
人生最曼妙的风景,竟是内心的淡定与从容!
對無
先分析您的程式碼:
取得字串長度 傳回 C 字串 str 的長度。 C 字串的長度由終止空字元決定:C 字串的長度等於字串開頭和終止空字元之間的字元數(不包括終止空字元本身)。 這不應該與保存字串的陣列的大小混淆。例如: char mystr[100]="測試字串"; 定義了一個大小為100個字元的字元數組,但是初始化mystr的C字串的長度只有11個字元。因此,雖然 sizeof(mystr) 的計算結果為 100,但 strlen(mystr) 傳回 11。
取得字串長度
傳回 C 字串 str 的長度。
C 字串的長度由終止空字元決定:C 字串的長度等於字串開頭和終止空字元之間的字元數(不包括終止空字元本身)。
這不應該與保存字串的陣列的大小混淆。例如:
char mystr[100]="測試字串";
定義了一個大小為100個字元的字元數組,但是初始化mystr的C字串的長度只有11個字元。因此,雖然 sizeof(mystr) 的計算結果為 100,但 strlen(mystr) 傳回 11。
字元數組是字元數組,字串是字串。只有字串才有
雷雷
對無
先分析您的程式碼:
雷雷進一步理解
雷雷 雷雷strlen 說明
字元數組是字元數組,字串是字串。只有字串才有
被踩了一下…可能踩我的人認為,當數組的長度大於字串實際長度時,編譯器會自動在字串末尾添加雷雷