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

来源:6-1 指针的概念

三尺357159

2021-11-16

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回答

quickzhao

2021-11-16

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

0
1
三尺357159
非常感谢!
2021-11-17
共1条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程