1. 程式人生 > >【C++】char* 與char []定義的區別

【C++】char* 與char []定義的區別

char* s1=”abc”;s1是一個指標,s1所指向的地址的內容是不可改變的,但是s1可以指向其他地址。s1是指向字串常量的,它儲存在裡不可被修改。
如下:

char* s1="abcd";
s1[2]='z';    //錯誤:編譯時能通過執行的時候會報錯
s1="xyz";     //可以將指標指向其他內容
cout<<s1[2]<<endl;

char s2[] =”cdef”;是一個數組,s2指向第一個元素所在的位置,一經分配就不能更改。 它的空間是則棧裡分配的,可以被重新修改,但是s2不能夠再指向其他空間。
如下:

char s2[]="efgh"
; s2="xyz"; //出錯:s2不可以再指向其他內容 cout<<s2[2]<<endl; // s2中的元素是可以被修改的

若是將指標指向一個數組,那麼這個陣列即可以被改變元素值又可以被指向其他字串。如下:

char *p=s2;
p[0]='x';   //可以改變元素值
p="rty";    //可以指向其他字串
cout<<p;

這種既能改變元素值又能重新指向其他字串的方式與string定義的字串功能很相似。