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

Jon*_*Gik 1 c++ unions

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

union myunion {
char character[4];
}

... = &(myunion.character[0])
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助.

zne*_*eak 5

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

int value = 0x01020304;
Run Code Online (Sandbox Code Playgroud)

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

character[0] == 04;
character[1] == 03;
character[2] == 02;
character[3] == 01;
Run Code Online (Sandbox Code Playgroud)

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

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