c - 如何从其成员地址获取结构的起始地址

标签 c struct memory-address

C语言中,如何从成员地址中获取结构体的起始地址?

struct type1 {
    //...
    int member1;
    //...
};
struct type1 obj1;

ptr1obj1中成员member1的地址,如何定义
#define start_add(ptr1, type1, member1) 获取 obj1 的
起始地址?

最佳答案

您可以使用 offsetof 执行此操作:

#define start_add(ptr1, type1, member1) ((type1 *)((char *)(ptr1) - offsetof(type1, member1)))

关于c - 如何从其成员地址获取结构的起始地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2033084/

相关文章:

go - 如何在方法中返回结构变量

python - 访问对象存储器地址

c - 如果 &a 生成 a 的地址,它如何成为指向 a 的指针?

c++ - vector 元素的引用地址与其指向的 vector 元素具有不同的地址。为什么?

C - 无法初始化作为参数传递的指针

c++ - 结构不可分配?

c++ - 是否可以在只读模式下连接到内存中的 sqlite 数据库?

c - 重新分配不工作

c++ - 如何编写可移植的 simd 代码以实现复杂的乘法归约

c - 回文 - 仅限 C 语言