社区
C++ 语言
帖子详情
一个困扰我好久的问题(求救啊)
kin988g
2011-10-01 05:49:38
#include <iostream>
using namespace std;
int main() {
int c[5]={1,2,3,4,5};
char b[5]={'1','2','3','4','5'};
cout<<c;
cout<<endl;
cout<<b;
return 0;
}
运行结果为:0x22ff20 //地址
12345@4 //乱码
想不通为什么cout<<b;不能输出地址?求救大家
...全文
131
13
打赏
收藏
一个困扰我好久的问题(求救啊)
#include using namespace std; int main() { int c[5]={1,2,3,4,5}; char b[5]={'1','2','3','4','5'}; cout<<c; cout<<endl; cout<<b; return 0; } 运行结果为:0x22ff20 //地址 12345@4 //乱码 想不通为什么cout<<b;不能输出地址?求救大家
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kin988g
2011-10-02
打赏
举报
回复
谢谢大家,我懂了
5t4rk
2011-10-02
打赏
举报
回复
由于cout是一个类对象,这个类重载了运算符<<,
当它的操作数是char*时,视作输出一个c风格的字符串,
直到遇到空字符,而非输出指针的值,想输出指针的值,
显式转换为非char指针就行了,例如:
cout << ( void* )b;
乱码是缺少结束字符 '\0'
ccnunlp
2011-10-02
打赏
举报
回复
输出一个字符串数组是默认到'\0'为止的,你应该加一个川尾,而输出地址的那个是,cout也可用于输出一个地址的,此处的int a[]中a这个数组名可以看作一个指针
AnYidan
2011-10-02
打赏
举报
回复
语言的东西,很多是硬性的规定,没有道理可言
ljhhh0123
2011-10-02
打赏
举报
回复
除了sizeof(c)表示的是整个数组的大小外,数组c代表的是数组元素的指针(指针值是常量)。
int c[5]; c就是int*const p;
char b[5]; b就是 char * const p;
那么cout遇到整型指针时则输出这个指针值,如果是字符指针时,则输出这个字符串。
楼主这样的写法容易产生歧义。
如果真要输出地址值的话,请明确的做出转型。加上地址操作符&即可。
如:&c,&b;
biegaoshuwoya
2011-10-01
打赏
举报
回复
要输出b 的地址可以转换下cout<<(int *)b;
xfuan
2011-10-01
打赏
举报
回复
#include <iostream>
using namespace std;
int main() {
int c[5]={1,2,3,4,5};
char b[5]={'1','2','3','4','5'};
cout<<c;
cout<<endl;
cout<<b;
return 0;
}
c数组是整形,c只表示数组第一个元素的地址,b是字符数组,在c语言中,他有特别的地方就是:输出时从起始位置往后输出遇到‘\0’.#include <iostream>
using namespace std;
int main() {
int c[5]={1,2,3,4,5};
char b[6]={'1','2','3','4','5'};
for(int i=0;i<5;i++)
cout<<c[i];
cout<<endl;
cout<<b;
return 0;
}
chelp
2011-10-01
打赏
举报
回复
字符数组,要用cout 输出必须要以字符'\0'结尾
对于字符串,默认加’'0'
wolf_you
2011-10-01
打赏
举报
回复
这里你输出b实际上他是访问指针的数据,而且字符串一般以\0结束...你这个没有结束符所以貌似会有乱码....
你这样定义 char *b="12345"; 然后 cout<<b;就会是:12345 。楼主可以单步调试一下程序...
不过你可以用 printf("%X\n",b);
chelp
2011-10-01
打赏
举报
回复
#include <iostream>
using namespace std;
int main() {
int c[5]={1,2,3,4,5};
char b[5]={'1','2','3','4','5'};
char s[5]={'2','3'};//剩下的的三个元素是'\0'
cout<<c<<endl;
cout<<b<<endl;//cout是以'\0'结束的,但其中没有顾出乱码
cout<<(int)(b)<<endl;//这才输出的是b的地址
cout<<s<<endl;
return 0;
}
hondely
2011-10-01
打赏
举报
回复
lz 数组是这样输出的吗?
for(int i=0; i<len; i++)
cout<<c[i];
c本来就是初始地址啊
chouxiaoya8100
2011-10-01
打赏
举报
回复
对于字符串,字符数组, cout 是这样操作的。。
它会找 字符数组的结尾'\0' , 你没有提供,所以就多出来了。。。。
你改成:{'1','2','3','4','5' ,'\0'} 试试
[Quote=引用楼主 kin988g 的回复:]
#include <iostream>
using namespace std;
int main() {
int c[5]={1,2,3,4,5};
char b[5]={'1','2','3','4','5'};
cout<<c;
cout<<endl;
cout<<b;
return 0;
}
运行结果为:0x22ff20 //地址
12345@4 ……
[/Quote]
taodm
2011-10-01
打赏
举报
回复
因为“规定”啊。否则,你现在就在问:哪咋输出字符串了。
在线
求救
,
一个
问题
困扰
了我很久
在线
求救
,
一个
问题
困扰
了我很久
小白
求救
Websocket
问题
小白
求救
Websocket
问题
遇到这种
问题
应该怎么解决,
困扰
了一天!!
关于IE
问题
,请教和
求救
这个
问题
已经不是
困扰
我第一次了,一直都很烦,可是也不知道怎么解决具体表现症状为:刚开始打开IE,一切浏览正常,网速也很快可是过一段时间以后(有时候很长,有时候很短),就再也打不开任何网页了只有把所有IE窗口...
求助这个咋解决,UE5.0.3打包出现错误,跪谢
困扰
好久
了。
求救
求救
求救
SSH系统性能
问题
-数据库连接泄漏
问题
[由于帖子不能贴图片,暂时先把
问题
放这了]
这段时间一直被
一个
SSH系统性能
问题
困扰
,项目在开发过程中出现Tomcat假死的
问题
。为了查清系统
问题
的原因,我找了个SIW软件用来监控系统占用端口,发现数据库连接数时常达到连接池设置的最大连接数。我使用的C3P0...
C++ 语言
64,636
社区成员
250,963
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章