我将结构和联合定义如下:

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[]的位置(索引)?

最佳答案

由于myStrunctmyByte的初始字节具有相同的地址,因此可以使用offsetof运算符来实现:

size_t offset = offsetof(MY_STRUCT, x);
MY_UNION u;
unsigned char *ptr = &u.myByte[offset];

注意,这不是动态完成的:offsetof是在编译时静态计算的。

10-04 10:42