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
strX==strY
这样的比较,
实际上不是比较 字符串的内容,
而是比较了 字符串的
首地址,
也就是他们的指针!!
既然是比较地址,
那么显然 str1!=tr2,
str3!=str4,
因为它们都是相对独立的
栈数组,
都有自己的空间, 那么比较地址自然就是不一样的。
str5 ==
str6
这个要看具体情况,
一种, 环境设置了
编译优化,
那么对于相同的常量, 环境将对其进行优化,
只保存一份内容,
使用不同的指针该内容,
这样, 得到的结果就是
str5
==
str6,
因为它们都指向了
同一份内存内容;
另外一种情况,
如果不选择优化,
那么 和栈数组一样,
str5
!=
str6
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; // 输出什么?
strX==strY
这样的比较,
实际上不是比较
而是比较了
既然是比较地址,
那么显然
都有自己的空间,
str5
这个要看具体情况,
一种,
那么对于相同的常量,
使用不同的指针该内容,
这样,
另外一种情况,
如果不选择优化,
那么