注意:
指標方式建立的字元陣列,是常量字串,指標指向的內容是沒法更改的;方括號()方式建立的字元陣列僅僅是變數,內容可以更改。
string 物件沒有 『\0』
char text 字串陣列若沒有 '\0',只能當做陣列處理,若有 '\0',可以看做字串,可以cou<
字串陣列
用字串初始化字元陣列時,或是char型指標指向字串時,"\0"附帶在後面與前面的字元一起作為字元陣列的元素。
在記憶體中,就是根據"\0"來確認字串,如果找不到就會沿著字元一直找下去。它占用記憶體空間,但是不計入串長。
用字串初始化字元陣列時,系統會在字元陣列的末尾自動加上乙個字元"\0",因此陣列的大小比字串中實際字元的個數大。如:
sizeof(str1)=strlen(str1) +1;
sizeof會計入『\0』,strlen不會
參見另外一篇部落格:
#includeusing namespace std;
int a = 0; //全域性初始化區(data段)
char *p1; //全域性未初始化區(bss段)
int main()
字串常量和變數
定義 在乙個雙引號 內的字串行或者轉義字元序列稱為字串常量 例如 ha ha!abc n t 這些字串常量是不能改變的,如果試圖改變指標所指向的內容是錯誤的 因為字串常量是存在靜態記憶體區的,不可以改變的。如定義字串常量 char a i love you.a h 試圖改變它 這是錯誤的。在c語言中...
字串常量與變數
char str hello word 在.data 字串常量不允許改變 str所儲存的字串不可改變 static char str1 20 hello word data str 字串變數 str1所儲存的字串可改變 char str2 20 hello word stack str2 字串變數 ...
字串常量
1.當乙個字串常量出現於表示式中時,它的值是乙個指標常量。編譯器被這些指定字元的乙份拷貝儲存在記憶體的某個位置,並儲存乙個指向第乙個字元的指標。陣列名用於表示式中時,它的值也是指標常量 2.xyz 1 因為字串常量實際上是個常量指標,這個表示式計算 指標值加上1 的數值。它的結果是個指標,指向字串中...