小编Vac*_*ant的帖子

为什么打印 c 样式字符串的“索引 n 的地址”会导致子字符串的输出

我对 C++ 比较陌生,在使用指向 char 数组(C 样式字符串)的指针时,我对其与 ostream 对象的行为感到困惑。

const char* items {"sox"};
cout << items << endl;
cout << items[0] << endl;
cout << *items << endl;
cout << &items << endl;
cout << &items[1] << endl;
Run Code Online (Sandbox Code Playgroud)

运行这会导致:

sox
s
s
0x7fff2e832870
ox
Run Code Online (Sandbox Code Playgroud)

与其他数据类型的指针相反,打印变量不输出地址,而是作为一个整体输出字符串。据我了解,这是由于<<运算符为char 数组重载以将它们视为字符串。

我不明白的是,cout << &items[1]从索引 1 开始打印字符串 ( ox),而不是索引 1处的地址char。这也是由于<<运算符重载还是这种行为的原因是什么?

c++ pointers cout char ostream

1
推荐指数
1
解决办法
65
查看次数

标签 统计

c++ ×1

char ×1

cout ×1

ostream ×1

pointers ×1