帮我解释下输出结果,谢谢!

zhiys227 2008-04-14 11:16:53
#include "iostream.h"

int main() {

bool boolalpha = false;

char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";

boolalpha = str3==str4;

cout << boolalpha <<":"<< ( str1==str2 ) << endl;
cout << boolalpha <<":"<< ( str3==str4 ) << endl;
cout << boolalpha <<":"<< ( str5==str6 ) << endl;
}

/** out:
0 : 0
0 : 0
0 : 1
**/


...全文
54 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhiys227 2008-04-14
  • 打赏
  • 举报
回复
谢谢,明白了。
zhxx_qs 2008-04-14
  • 打赏
  • 举报
回复
前4个为字符数组, 有各自的存储空间
后两个指向常量,地址相同.
zhiys227 2008-04-14
  • 打赏
  • 举报
回复
那为什么 cout<<str1; out : abc
cout<<str2; out : abc
是有点不懂

薛定谔之死猫 2008-04-14
  • 打赏
  • 举报
回复
楼上几位动作真快
薛定谔之死猫 2008-04-14
  • 打赏
  • 举报
回复
你比较的都是指针,除了常量"abc"的指针相等以外(str5和str6),别的指针都会各自指向不同的地址,就是应该这么输出
ryfdizuo 2008-04-14
  • 打赏
  • 举报
回复
	//str1,str2,str3,str4是数组名,也是地址,当然不等了,
cout << boolalpha <<":" << ( str1==str2 ) << endl;
cout << boolalpha <<":" << ( str3==str4 ) << endl;

//str5,str6指向了相同的常量存储区域,地址一样,
cout << boolalpha <<":" << ( str5==str6 ) << endl; //
babyvox1999 2008-04-14
  • 打赏
  • 举报
回复
str5和6指向同一块内存,没自己分配
taodm 2008-04-14
  • 打赏
  • 举报
回复
你不会一个都不懂吧?
babyvox1999 2008-04-14
  • 打赏
  • 举报
回复
不同数组的首地址都不同

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧