0
04
03
05
请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

使用指针表示字符串的时候

const char* str = "helloworld";
cout << str << endl;   // 输出整个字符串helloworld
cout << (*str) << endl;  // h
cout << (void*)str << endl; //首地址
int a = 112;
int* d = &a;
cout << d << endl; //输出a的地址值
cout << (*d) << endl; // 输出a的值112

为什么cout << str<< endl; 输出的就是整个字符串的值,
而cout << d << endl; 就是输出a首地址值
为什么输出的字符串的首地址值要通过(void*)str的方式来输出呢

图片描述

正在回答

插入代码

1回答

在C/C++中原始的字符串比较特殊,其实就是一个特殊类型的指针包装的字符数组。这么设计是早期C时代对于空间资源优化的考虑。所以当cout时会把const char* 作为整体输出。如果需要输入地址值需要进行强制类型转换,这样就不会把该指针作为字符串来解析,就可以显示指针对应的地址值。

0 回复 有任何疑惑可以回复我~
  • 提问者 三尺357159 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-11-17 10:11:08
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号