字串常數 (如 "a string") 存放於靜態儲存區,編譯器自動在末尾補 \0 結束符,實際佔用位元組數 = 字元數 + 1。
char s[] = "a string"; // s 有 9 個元素,s[8] = '\0'
編譯器直接將字串複製到陣列 (初始化)。
char *cp;
cp = "a string"; // cp 指向字串常數首字元 'a'
字串常數出現在運算式中會轉換為字元指標。透過指標存取:
*cp 或 cp[0] → 'a'cp[i] 或 *(cp+i) → 第 i 個字元不可透過指標修改字串常數內容,行為未定義。若需修改,請使用字元陣列。