str= "我愛中國";
這兩句話的本質就是在內存中開辟壹個內存空間,把“我愛中國”放進這個內存空間,然後把這個內存空間的地址給str。因為str是壹個變量,所以給它賦值是合法的。
看char str[]=“我愛中國”;這句話的作用是定義壹個char數組,其中str是數組名和第壹個元素的地址。既然這是變量的定義,編譯器打開內存空間,然後放入字符串,再把地址給str,還是可以接受的。
最後看char str[20];
str = "我愛中國!";在這句話中,首先定義了壹個char數組str,str指向大小為20的內存空間,然後打開壹個內存空間來放字符串。這時候,問題來了。str本身就是壹個固定不變的值,妳強行給它賦壹個新地址當然不合理。