C++ 为什么是c++;代码没有返回数组中每个字符的地址吗?

C++ 为什么是c++;代码没有返回数组中每个字符的地址吗?,c++,C++,我正在尝试获取数组中每个字符的地址,如下所示: #include <bits/stdc++.h> using namespace std; int main() { char arr[] = {'a', 'b', 'c'}; cout<<&arr[0]<<endl; cout<<&arr[1]<<endl; cout<<&arr[2]<<endl;

我正在尝试获取数组中每个字符的地址,如下所示:

#include <bits/stdc++.h>
using namespace std;

int main() {
    char arr[] = {'a', 'b', 'c'};

    cout<<&arr[0]<<endl;
    cout<<&arr[1]<<endl;
    cout<<&arr[2]<<endl;

    return 0;
}
abc0╒@
bc0╒@
c0╒@
Press any key to continue . . .

输出看起来不像十六进制数字的地址,只是一些随机字符。我是否遗漏了一些概念?我想获取数组arr中每个字符的地址。

类型
&arr[I]
字符*


cout
为实例的类具有重载的
如果要打印出地址,可以首先将它们(从
char*
)强制转换为
void*

cout<<static_cast<void*>(&arr[0])<<endl;
cout<<static_cast<void*>(&arr[1])<<endl;
cout<<static_cast<void*>(&arr[2])<<endl;

cout@Peter:是的,你说得对。谢谢你,我已经去掉了马虎的毛病。(请不要因为答案不准确而随意否决——这不是针对个人的。)
cout<<static_cast<void*>(&arr[0])<<endl;
cout<<static_cast<void*>(&arr[1])<<endl;
cout<<static_cast<void*>(&arr[2])<<endl;