首頁  >  問答  >  主體

C++中数组strlen

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 呢?
黄舟黄舟2764 天前528

全部回覆(4)我來回復

  • 迷茫

    迷茫2017-04-17 15:06:59

    對無

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 15:06:59

    先分析您的程式碼:

    雷雷

    進一步理解

    雷雷 雷雷

    strlen 說明

    取得字串長度

    傳回 C 字串 str 的長度。

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

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

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

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

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 15:06:59

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

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

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 15:06:59

    雷雷

    回覆
    0
  • 取消回覆