首页 > 解决方案 > 带有字符数组变量的指针

问题描述

我正在学习 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 打印出第一个元素。

当我们在这样的数组中使用指针时,指针如何工作是我想了解的。

标签: c++arrayspointers

解决方案


当您取消引用数组或指针时,您最终会得到一个char. char如您所料,这将打印出。

但是,当您提供 a char*(这是您在数组和指针情况下得到的,因为数组在此处衰减为指针)时,会调用operator<<for的重载。char*

此重载将char*它看到的任何内容视为 C 字符串,这就是您看到它打印出来的原因。


推荐阅读