为什么C ++中的字符数组返回其项而不是其地址?

Gus*_*ust 0 c++ arrays string

例如,

const char str[] ={'H','e','l','l','o', '\0'};
const int nums[] = {1,2,3,4,5};
cout << str << " " << nums;
Run Code Online (Sandbox Code Playgroud)

给出:

Hello 0x7ffff85c0cf5
Run Code Online (Sandbox Code Playgroud)

显然,如果我想同时获得两者的地址,我可以

Hello 0x7ffff85c0cf5
Run Code Online (Sandbox Code Playgroud)

但是我想知道为什么这个整数数组和一个字符数组(字符串文字)之间会有区别。这是仅保留给字符串的特殊情况吗?

Bat*_*eba 7

是的,您绝对正确。上的<<运算符对ostream有特殊的重载const char*

没有提供这样的过载int*-在这种情况下,选择const void*过载。