char *與char[]的區別

下列代碼:

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';,原因也是上述的解釋。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章