C笔试题-1

来源:互联网 发布:美达施膳食纤维粉 知乎 编辑:程序博客网 时间:2024/05/29 06:43
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
0 0
原创粉丝点击