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

union myunion {
char character[4];
}

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

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

谢谢你的帮助。

最佳答案

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

int value = 0x01020304;

然后,您的char数组将如下所示:
character[0] == 04;
character[1] == 03;
character[2] == 02;
character[3] == 01;

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

但是,如果您对此负责,或者不打算支持具有不同字节序的体系结构,则应该没问题。

关于c++ - 在 union 中获取指向变量的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6406567/

10-12 23:50