c++ - 带有字符数组变量的指针
问题描述
我正在学习 C++ 并且正在理解指针并创建了以下代码
#include<string>
using namespace std;
int main()
{
char s[100] = "Today is a rainy day";
cout<<s[0]<<endl;
char *p;
p = s;
cout <<s<<endl;
cout<<p<<endl;
cout<<*p<<endl;
}
在这段代码中,我假设 s 指向数组的起始地址,打印指针 p 会给我地址,*p 会给我数组的第一个元素。
我的输出是形式
T
Today is a rainy day
Today is a rainy day
T
在这里, p 和 s 都打印出我不理解的完整字符数组,即使 p 现在只是一个数组,也使用 *p 打印出第一个元素。
当我们在这样的数组中使用指针时,指针如何工作是我想了解的。
解决方案
当您取消引用数组或指针时,您最终会得到一个char
. char
如您所料,这将打印出。
但是,当您提供 a char*
(这是您在数组和指针情况下得到的,因为数组在此处衰减为指针)时,会调用operator<<
for的重载。char*
此重载将char*
它看到的任何内容视为 C 字符串,这就是您看到它打印出来的原因。