我定义一个结构体和一个 union 如下:
struct MY_STRUCT
{
int a;
unsigned int x;
char c;
};
union MY_UNION
{
unsigned char myByte[sizeof(struct MY_STRUCT)];
struct MY_STRUCT myStruct;
};
如何动态查找 myStruct.x
在 myByte[]
数组中的位置(索引)?
最佳答案
由于myStruct
和myByte
的初始字节具有相同的地址,因此您可以使用offsetof
运算符:
size_t offset = offsetof(MY_STRUCT, x);
MY_UNION u;
unsigned char *ptr = &u.myByte[offset];
请注意,这不是动态完成的:offsetof
是在编译时静态计算的。
关于c - 如何查找结构元素的索引作为 union 中字节数组的索引(在标准 C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578549/