c - 如何查找结构元素的索引作为 union 中字节数组的索引(在标准 C 中)

标签 c

我定义一个结构体和一个 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.xmyByte[] 数组中的位置(索引)?

最佳答案

由于myStructmyByte的初始字节具有相同的地址,因此您可以使用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/

相关文章:

Python3 int, long统一实现

c++ - CPP中的libxml程序

c - 如何在C中使用 "."分隔符分割字符串

c - Valgrind ... 8 个大小的 block 内的 4 个字节已释放

c - 如何在C中从右向左插入树中的节点?

c - 输入不足

c++ - 从 native iOS C 代码访问所有环境变量

java - 如何实时生成简单的二维图形?

java - 如何将C语言结构定义转换成Java代码?

c - 将函数变量声明为局部而不是全局会不会影响效率?