对char进行c风格强制转换后的不同内存分配



问题是,当我将&char转换为void*,然后再转换为char*时,结果指针具有不同的地址分配。

char example = '-';
void* voidPtr = (void*)&example;
char* charPtr = (char*)voidPtr;
cout << (void*)&example << endl; // 004FFC37
cout << voidPtr << endl;         // 004FFC37
cout << (void*)&charPtr << endl; // **004FFC30**

但是对于short (int, float, double)则不是这样。

short example   = 1;
void* voidPtr   = (void*)&example;
short* shortPtr = (short*)voidPtr;

cout << &example << endl; // 0032FC14
cout << voidPtr  << endl; // 0032FC14
cout << shortPtr << endl; // 0032FC14

为什么会这样?

其实是一样的。只是

cout << (void*)&charPtr << endl; 

应该

cout << (void*)charPtr << endl; 

错误地打印了charPtr本身的地址,而不是charPtr指向的地址。

相关内容

  • 没有找到相关文章

最新更新