今天看到如下**
char str1 = "abc";
char str2 = "abc";
const char str3 = "abc";
const char str4 = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << ( str1==str2 ) << endl; // 輸出什麼?
cout << boolalpha << ( str3==str4 ) << endl; // 輸出什麼?
cout << boolalpha << ( str5==str6 ) << endl; // 輸出什麼?
動手試了下,發現結果是:
false
false
true
前兩個false不難理解,除錯時發現str5 與 str6 的位址是一樣的。去網上搜了搜,發現原來
如果同一檔案中char *s1與 char *s2 的值是一樣的,那麼系統會自動優化,將它們存在相同記憶體,
即s1 與 s2 的值會相等,但如果用來比較兩字串是否相等,還是用 strcmp 比較好。
char s1和char s2 的區別
對於下面的 說法正確的是 char s1 hello world char s2 hello world s1 2 e 1 s2 2 e 2 s1 2 e 3 s2 2 e 4 語句2 4是非法的 語句3 4是非法的 語句1 3是非法的 僅語句1 是非法的 僅語句2 是非法的 語句1 4都是合法的 ...
小結char s 與char s 的區別
char s1 hello char s2 hello 區別所在 char s1 的s1,而指標是指向一塊記憶體區域,它指向的記憶體區域的大小可以隨時改變,而且當指標指向常量字串時,它的內容是不可以被修改的,否則在執行時會報錯。char s2的s2 是陣列對應著一塊記憶體區域,其位址和容量在生命期裡...
C語言中char s 與char s的不同
首先看一下c語言中下面兩個語句的不同 char s 10 abcde char s abcde 兩者不同的關鍵點如下 1 陣列 char s 10 abcde s是乙個陣列 sizeof s 10 bytes a與 a是一樣的 abcde儲存在記憶體的棧空間中 char s 10 abcde s h...