「陣列與指標相同」是危險的錯誤認知。ANSI C 標準規定:
// 檔案 1:定義 char mango[] = "abc"; // 檔案 2:外部宣告 —— 錯誤! extern char *mango; // 應為 extern char mango[];
編譯器會報錯,因為「陣列定義」與「指標外部宣告」不匹配。
extern)。X = Y 中,X 為左值(位址,編譯期可知),Y 為右值(內容,執行期可知)。a[i]:編譯器直接以陣列基址 + 偏移量存取 —— 直接引用。p[i]:需先取得 p 儲存的位址,再加偏移 —— 間接引用。

char *p = "abc";:指標指向唯讀區域,嘗試修改行為未定義。char a[] = "abc";:陣列在堆疊/資料區,內容可修改。陣列位址固定、不可重新指向;指標可指向不同位址。務必讓宣告與定義完全匹配,避免未定義行為。