x = y 中 x 代表地址(左值),y 代表內容(右值)。char *p = "012345"; → p 指向只讀區,p[1] 不可改。char a[] = "01234"; → a 在棧上分配,可修改 a[1]。int main() {
char *p = "012345";
char a[19] = "01234";
printf("%c", p[1]); // '1'
// p[1] = 'x'; // 段錯誤
printf("%c", a[1]); // '1'
a[1] = 'a'; // 合法
printf("%c", a[1]); // 'a'
return 0;
}
摘自 CodeBlog