C++问题,我想输出字符的地址,但是为什么输出的是乱码呢?

数组是整形的话没问题,输出的是地址。但是字符型的话,就出现了这样的乱码... 数组是整形的话没问题,输出的是地址。但是字符型的话,就出现了这样的乱码 展开
 我来答
lyqf365
2013-03-02 · TA获得超过1185个赞
知道小有建树答主
回答量:1291
采纳率:100%
帮助的人:786万
展开全部

 

std::cout 对象有重载的,<<后面不一样的类型会调用不一样的函数。

kaixingui2012
2013-03-02 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6402万
展开全部
a被定义成字符数组,5个空间,5个字符
而b是字符指针
当cout << b+i <<"\n" ;时,系统会把b+i所指向的空间中的数据当字符串处理,它需要一个结束符
而a数组中没有提供这个结束符'\0',所以会出现你的现象。
修改方法:
char a[SHU+1]={'a','b','c','d','e'} ;这样就好了

如果想输出单个字符,则需要如下修改:
cout << *(b+i) <<"\n" ;

你如果将a的类型改成int,则按你现在的代码,输出的应该是地址值,要输出相应的数值,也应该改成*(b+i)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b0bba24
2013-03-02 · TA获得超过887个赞
知道小有建树答主
回答量:446
采纳率:0%
帮助的人:465万
展开全部
对于字符指针,要输出地址要如下用:std::cout<<&(b+i)<<"\n";
如果像你写的那样,则是输出字符串,由于你的字符数组a中没有'\0'结尾,所以输完字符e后则是乱码了啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
my_ferry
2013-03-02 · 超过30用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:60.5万
展开全部
你输出的不是地址,而是指针b+i这个位置的 字符
因为b是char* 类型的,所以遇到结束符才结束输出,如果a[4]='\0' 就不会有乱码了
想输出地址,&b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjfaok
2013-03-02 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1608万
展开全部
std::cout<<(void)(b+i)<<'\n';
追问
你写的代码编译错误啊
追答
std::cout(b+i)比较好……
cout对于char*有特殊处理,因此要输出地址的话要转换成其他类型的指针……
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式