今天看到如下代码
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 比较好。