char str1[] = "abcde";
char str2[] = "abcde";
const char str3[] = "abcde";
const char str4[] = "abcde";
char *str5 = "abcde";
char *str6 = "abcde";
const char *str7 = "abcde";
const char *str8 = "abcde";
cout << (str1 == str2) << endl;
cout << (str3 == str4) << endl;
cout << (str5 == str6) << endl;
cout << (str7 == str8) << endl;
输出结果:
0
0
1
1
原因:
定义的字符数组分配的内存在栈上开辟,各有一份,所以地址值不等;
定义的字符指针指向的是字符常量,为静态存储区域上开辟,只有一份,地址值相同。