关于char 类型地址的问题。

azhou88 2013-09-30 10:12:58
char mm[7]="dfadsf";

cout<<mm<<endl;
cout<<&mm<<endl; //输出的是mm的地址,应该是首地址。
for (int i=0;i<7;i++)
{
cout<<&mm[i]<<endl; 循环里怎么输出的不是地址,而是字母?
}

最好能详细点。谢谢。把您的感悟都说出来,对我来说是字字金贵啊。
...全文
157 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
passion_wu128 2013-09-30
  • 打赏
  • 举报
回复
引用 2 楼 azhou88 的回复:
我知道怎么样才能输出地址。只是我不知道为什么我那样子不行?是什么原因 如果按照你的说法。那么char *对于cout书输出的时候是个特列?(操作符如果接受char*类型的参数,输出的是其指向的字符串。所以输出字母了。) 你说的我能理解。。但是我可不可以怎么认为.char*输出的时候就是个特列,跟一般情况不一样?可以吗?
char*本来就很特殊,跟int*,float*,double*不一样啊。 后面加'\0'表示字符串结束,其它的数据类型的指针没有这个特性。
azhou88 2013-09-30
  • 打赏
  • 举报
回复
我知道怎么样才能输出地址。只是我不知道为什么我那样子不行?是什么原因 如果按照你的说法。那么char *对于cout书输出的时候是个特列?(操作符如果接受char*类型的参数,输出的是其指向的字符串。所以输出字母了。) 你说的我能理解。。但是我可不可以怎么认为.char*输出的时候就是个特列,跟一般情况不一样?可以吗?
passion_wu128 2013-09-30
  • 打赏
  • 举报
回复
cout<<&mm[i]<<endl;等同于 cout << mm + i << endl; 本质上是const char*类型的,而cout的《操作符如果接受char*类型的参数,输出的是其指向的字符串。所以输出字母了。 你这样改后就输出地址了 cout << reinterpret_cast<int*>(&mm[i]) << endl;

64,648

社区成员

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

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