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 呢?
怪我咯2017-04-17 15:06:59
先分析您的程式碼:
雷雷取得字串長度
傳回 C 字串 str 的長度。
C 字串的長度由終止空字元決定:C 字串的長度等於字串開頭和終止空字元之間的字元數(不包括終止空字元本身)。
這不應該與保存字串的陣列的大小混淆。例如:
char mystr[100]="測試字串";
定義了一個大小為100個字元的字元數組,但是初始化mystr的C字串的長度只有11個字元。因此,雖然 sizeof(mystr) 的計算結果為 100,但 strlen(mystr) 傳回 11。