C 語言字串以 **首個 \0 (NUL, ASCII 0)** 為結束標記。strlen、printf("%s")、strcpy 等所有標準庫函數**遇到 \0 即停止**,後續位元組不屬於字串內容。
char s[] = "\0mn"; // 實際記憶體: 00 6D 6E 00
printf("%d", strlen(s)); // 0
printf("%d", sizeof(s)); // 4 (含編譯器補的結束符)
\0 是八進制轉義,代表單一位元組 0x00。mn 是普通字符,但在 \0 之後,不被視為字串一部分。| 字面量 | 含義 | 字串長度 |
|---|---|---|
| "\0" | 單一 NUL 字符 | 0 |
| "0" | 字符 '0' (ASCII 48) | 1 |
| "\0mn" | NUL + 'm' + 'n' | 0 |
| "\\0mn" | 反斜線 + '0' + 'm' + 'n' | 4 |