问题是,当我将&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
指向的地址。