首页 > 解决方案 > 带有 c 样式字符串的 C++ 指针

问题描述

为什么当 cout 指针时我没有得到地址?请参阅下面的代码:code1:

string s1 {"NAME"};
string *p1 {&s1};
cout<<p1; 

给出 0x71fcc0 这是有道理的。但是看看当我使用 cstyle 字符串时会发生什么:

char cstring1 [] {"NAME"};
char *cp2 = &cstring1[0];
cout<<cp2<<endl; 

在屏幕上打印 NAME 那么为什么它不打印地址呢?

标签: c++pointersc-stringscoutmemory-address

解决方案


那么为什么它不打印地址呢?

因为它是一个指向char. 当插入字符流时,指向字符的指针与其他指针的处理方式不同。

当指向 char 的指针插入到字符流中时,将生成指向的字符串,而不是地址。如果指向的字符串不是以空值结尾的,则程序的行为是未定义的。


推荐阅读