下列代碼:
char *str1 = "hfut";
char *str2 = "hfut";
char str3[] = "new";
char str4[] = "new";
str1和str2實際上指向的是同一個內存區域,因爲"hfut"被編譯器是視爲常量,存放在常量區了。
而,
str3和str4指向的不是同一個內存去也,它實際上是在棧上開闢一個數組,然後把常量區的"new"複製到其中。
由此可知他們之間有很大的不同,雖然有那麼點形似。
ps.上述,可以寫str3[i]='s';但是不能寫str1[i]='s';,原因也是上述的解釋。