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