C++ 打印字符数组地址的正确方法

C++ 打印字符数组地址的正确方法,c++,arrays,character,C++,Arrays,Character,所以,我最近一直在深入研究字符数组,我试图打印字符数组中每个元素的地址 char a[4] = {'i','c','e','\0'}; for(int i = 0; i < 3; ++i){ cout<<(void*)a[i]<<" "; cout<<&a[i]<<" "; cout<<a[i]<<endl; } chara[4]={'i','c','e','0'}; 对于(int i=0;i

所以,我最近一直在深入研究字符数组,我试图打印字符数组中每个元素的地址

char a[4] = {'i','c','e','\0'};
for(int i = 0; i < 3; ++i){
  cout<<(void*)a[i]<<" ";
  cout<<&a[i]<<" ";
  cout<<a[i]<<endl;
 }
chara[4]={'i','c','e','0'};
对于(int i=0;i<3;++i){
库特
我试图打印字符数组中每个元素的地址

(void*)a[i]
正在将元素(字符
)本身转换为
void*
,而不是元素的地址

每个元素的地址如下所示:

cout<<(void*)&a[i]<<" ";
//           ^
我试图打印字符数组中每个元素的地址

(void*)a[i]
正在将元素(字符)本身转换为
void*
,而不是元素的地址

每个元素的地址如下所示:

cout<<(void*)&a[i]<<" ";
//           ^

您的打印值已转换为
void*
,要打印地址,您需要

cout<< static_cast<void*>(&a[i])<<" ";

cout您的打印值强制转换为
void*
,要打印地址,您需要

cout<< static_cast<void*>(&a[i])<<" ";

cout当前,您没有获取地址。您将字符的ASCII值转换为
void*
。这就是值不正确的原因

您要做的是使用一个
静态\u cast
并获取元素的地址
&a[i]

cout << static_cast<void*> (&a[i]) << " ";

cout当前,您没有获取地址。您将字符的ASCII值转换为
void*
。这就是值不正确的原因

您要做的是使用一个
静态\u cast
并获取元素的地址
&a[i]

cout << static_cast<void*> (&a[i]) << " ";
cout