char *str = "hi,guys!"; // 指向字符串字面量(只讀區)
strcpy_s(str, 6, "aaaaa"); // 運行時崩潰:寫入只讀內存
char *str = "...":str 指向編譯器生成的 字符串字面量,存儲在 只讀數據段,任何修改嘗試導致未定義行為(通常崩潰)。char str[] = "...":在棧上分配數組,複製 字面量內容,擁有讀寫權限。char str[] = "hi,guys!"; // 或
char *str = malloc(20); strcpy(str, "hi,guys!"); // 記得 free
const char *str = "hi,guys!"; 加 const 防誤修改,編譯器會報錯。字符串字面量 ≠ 字符數組。前者是編譯期常量,後者是運行期可變緩衝區。