我只是想知道这是否是指向联合中char的指针的正确语法:
union myunion {
char character[4];
}
... = &(myunion.character[0])
它似乎在我的应用程序中产生了正确的结果,我似乎无法在互联网上找到正确的语法。
感谢您的帮助。
答案 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
。