歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C/C++中char* 與char []定義的區別

C/C++中char* 與char []定義的區別

日期:2017/3/1 9:53:13   编辑:Linux編程

C/C++初學者很可能會以為這兩個是一樣的,其實如果不需要去修改字符串的話,那它們的效果的確是一樣的。那它們的區別到底在哪兒呢?

char* s1="abc"; s1是一個指針,這個指針可以被修改,它可以指向新的地址。現在它指向的是字符串常量“abc”,字符串常量存儲在constant section裡,不可被修改。

char s2[10]="abc"; s2是數組指針,指針指向的位置就是數組的第一個元素所在的位置,一經分配是不能被修改的了。然後它的空間是在棧裡面分配的,當前存儲的是字符串"abc",它的內容是可以被重新修改賦值的。例如s2[0]='F';就可以將第一個字符改成F。

char* p=s2; p和s1是一樣的,可以指向s2指向的地址,所以數據在棧裡面,所以p是可以修改字符串的。

Summary:

char* s1="abc"; 是指針可以被修改,指向的字符串常量不可以修改。

char s2[10]="abc"; abc是在棧裡面,數值可以被修改。但是s2作為數組指針不能指向其他地址空間。

char* p=s2; p是和s1一樣的指針,可以指向其他地址,因為給它賦值為s2,所以當前指向的區域是可以被修改的。如果再讓p="dfg"; 那p就變成和s1一樣了。

Copyright © Linux教程網 All Rights Reserved