我需要在如下定义的结构内声明一个联合:
struct MyStruct
{
int m_DataType;
DWORD m_DataLen;
union theData
{
char m_Buff [_MAX_PATH];
struct MyData m_myData;
} m_Data;
};
最初,我尝试按如下方式访问联合数据(在添加m_Data声明之前):
MyStruct m_myStruct;
char* pBuff = m_myStruct.theData::m_Buff;
这将进行编译,但是将指向MyStruct结构开头的指针返回给pBuff,这使我以为我正在写入m_Buff缓冲区时覆盖了m_DataType和m_DataLength成员。
我正在使用Visual Studio2008。有人可以解释这种意外行为吗?谢谢。
最佳答案
您应该在写:
char *pBuff = m_myStruct.m_Data.m_Buff;
我希望我知道它是如何编写的。
关于c++ - 使用并集标记引用结构内部的并集会提供错误的地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2626808/