C++问题,我想输出字符的地址,但是为什么输出的是乱码呢?
5个回答
展开全部
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)
而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)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对于字符指针,要输出地址要如下用:std::cout<<&(b+i)<<"\n";
如果像你写的那样,则是输出字符串,由于你的字符数组a中没有'\0'结尾,所以输完字符e后则是乱码了啦
如果像你写的那样,则是输出字符串,由于你的字符数组a中没有'\0'结尾,所以输完字符e后则是乱码了啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你输出的不是地址,而是指针b+i这个位置的 字符
因为b是char* 类型的,所以遇到结束符才结束输出,如果a[4]='\0' 就不会有乱码了
想输出地址,&b
因为b是char* 类型的,所以遇到结束符才结束输出,如果a[4]='\0' 就不会有乱码了
想输出地址,&b
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
std::cout<<(void)(b+i)<<'\n';
追问
你写的代码编译错误啊
追答
std::cout(b+i)比较好……
cout对于char*有特殊处理,因此要输出地址的话要转换成其他类型的指针……
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询