1. 程式人生 > >[zz]幾道c++面試題

[zz]幾道c++面試題

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; // 輸出什麼? false
Cout << boolalpha << ( str3==str4 ) << endl; // 輸出什麼? false
Cout << boolalpha << ( str5==str6 ) << endl; // 輸出什麼? true
答:
str1和str2都是字元陣列,每個都有其自己的儲存區,它們的值則是各儲存區首地址,不等;str3和 str4同上,只是按const語義,它們所指向的資料區不能修改。str5和str6並非陣列而是字元指標,並不分配儲存區,其後的“abc”以常量形式存於靜態資料區,而它們自己僅是指向該區首地址的指標,相等