如果我从字符串“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);
}
您可能会想到纯 C 字符串,您的指针将在其中匹配。
在 C++ 中,std::string 是一个包含数据的对象(或更可能是指向它的指针),因此该对象和它包含的数据将位于不同的位置。