C 語言只有字元型別 (char),沒有字串型別。
char)char 陣列儲存字元序列'\0' (NUL, 數值 0) 結尾**標示字串結束strlen, strcpy, printf("%s")) 依賴此約定char str[] = "Hi";
// 記憶體佈局:
// 索引: 0 1 2
// 值: 'H' 'i' '\0'
// 大小: 3 bytes
| 誤區 | 正確認知 |
|---|---|
char *p = "abc"; 以為是字串型別 | 指向常數區字元陣列的指標,型別仍為 char* |
char c = "a"; 雙引號賦值給字元 | 錯誤!雙引號是字串字面常量 (型別 const char[2]),單引號 'a' 才是字元常量 |
以為 sizeof("abc") == 3 | sizeof("abc") == 4 (含結束 \0) |
理解「字串 = 字元陣列 + \0 結尾」是掌握 C 字串操作、避免緩衝區溢位、正確使用標準庫函式的基石。