为什么我的指针指向字符串第一个字符的地址!=字符串地址?

问题描述 投票:0回答:1

如果我从字符串“s”和保存在指针“p”中的字符串的第一个字符打印地址,为什么地址不同?不应该是一样的吗?我得到相同的字符,但地址不同。

#include <stdio.h>
#include <string>

int main()
{
    std::string s = "hello";
    char *p = &s[0];
    printf("%p\n", s);
    printf("%p\n", p);

    printf("%c\n", s[0]);
    printf("%c\n", *p);
}
string pointers
1个回答
0
投票

您可能会想到纯 C 字符串,您的指针将在其中匹配。

在 C++ 中,std::string 是一个包含数据的对象(或更可能是指向它的指针),因此该对象和它包含的数据将位于不同的位置。

© www.soinside.com 2019 - 2024. All rights reserved.