char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char *str5 = "abc";
const char *str6 = "abc";
char *str7 = "abc";
char *str8 = "abc";
cout << ( str1 = = str2 ) << endl;
cout << ( str3 = = str4 ) << endl;
cout << ( str5 = = str6 ) << endl;
cout << ( str7 = = str8 ) << endl;
结果是:0 0 1 1
解答:str1,str2,str3,str4是数组变量,它们有各自的内存空间;
而str5,str6,str7,str8是指针,它们指向相同的常量区域。
这里str1,str2是字符数组,char str1[] = “abc”是将str1初始化成abs,与char *str1 = “abc”有别。后者是定义str1指针,并让他指向一个字符串常量,如果再定义char *str2 = “abc”;,那么str2同样指向一个字符串常量,由于编译器会进行常量折叠,所以二者的值(指针)是一样的