获取指向联合中变量的指针

时间:2011-06-20 03:28:26

标签: c++ unions

我只是想知道这是否是指向联合中char的指针的正确语法:

union myunion {
char character[4];
}

... = &(myunion.character[0])

它似乎在我的应用程序中产生了正确的结果,我似乎无法在互联网上找到正确的语法。

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

这是正确的语法。但是,您需要注意一个问题:x86处理器是little-endian。这意味着如果你在x86平台(有点可能)或任何其他小端平台上部署,并且有一个这样的整数:

int value = 0x01020304;

然后,您的char数组将如下所示:

character[0] == 04;
character[1] == 03;
character[2] == 02;
character[3] == 01;

换句话说,字节将从内存中以相反的顺序读取。如果您需要在具有不同字节序的体系结构中使您的应用程序可移植,那么很快就会变得难看。

但是,如果您考虑到这一点或者不打算支持具有不同字节序的体系结构,那么您应该没问题。

答案 1 :(得分:0)

union myunion
{ char ch[4]; };
...
union myunion u;
void *ptr = (void*)&u;

此代码会将union变量u的地址放入ptr