12.23 a[3] = "abc"; 合法嗎?它是什麼意思?

儘管只在極其有限的環境下有用, 可它在 ANSI C (可能也包括一些  ANSI 之前的系統) 中是合法的。它聲明了一個長度為 3 的數組, 把它的 三個字符初始化為 'a', 'b' 和 'c', 但卻沒有通常的 '\0' 字符。因此該數組並不是一個真正的 C 字符串從而不能用在 strcpy, printf %s  等當中。

多數時候, 你應該讓編譯器計算數組初始化的初始值個數, 在初始值 ``abc" 中, 計算得長度當然應該是 4。

參考資料: [ISO, Sec. 6.5.7]; [H&S, Sec. 4.6.4 p. 98]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)