把常量字串賦予不同陣列和不同指標之間的區別

2021-08-08 01:27:40 字數 565 閱讀 4498

有下面這樣乙個c語言函式:

int  text(void)

char str1="good good study";

char str2="good good study";

char* str3="good good study";

char* str4="good good study";

if(str1==str2)

printf("same");

else

printf("not same");

if(str3==str4)

printf("same");

else

printf("not same");

求輸出結果。

答案是第乙個輸出no same,第二個輸出same;

原因是:str1和str2是兩個字串陣列,在定義後系統會給它們分配對應長度位元組的空間,之後再把字串複製到對應的空間,所以它們的陣列的位址是不一樣的。而str3和str4是指標,初始化時分配的是常量字串的位址(也就是說該字串在記憶體中只有乙個拷貝),兩個指標都指向同乙個位址,所以它們的值也是相等的。

字串常量和字元陣列

1.字串常量 char cstringa hello word 並不建議這樣寫 const char cstringb hello word 建議寫成這樣 cstringa a 執行時出錯,字串常量不允許修改 實際上,c語言中的標準,對於字串常量必須要賦值給const char 的變數,這樣就可以理...

字串常量和字元陣列

一.字串都是以 0 結尾 二.凡是雙引號中的內容,皆是字串。也就是,雙引號會在它內容後自動加乙個 0 且佔乙個位元組數。三.單引號中容納的是char型別的字元常量,且僅能容納乙個 四.字元陣列中不指定長度,系統會自動匹配適應的長度。五.如果對字元陣列沒有初始化完全,系統會在未賦值的地方新增 0 ch...

題解 字尾陣列 本質不同字串

給你乙個長為n的字串,求不同的子串的個數 我們定義兩個子串不同,當且僅當有這兩個子串長度不一樣 或者長度一樣且有任意一位不一樣。子串的定義 原字串中連續的一段字元組成的字串 這道題是一道字尾陣列的結論題。我們嘗試向sasa sa陣列以及h陣列的含義 s a i 表示 第i小的 字尾串的 左端點是 什...