如何从其成员的地址获取struct的起始地址

OnT*_*Way 6 c struct memory-address

在C语言中,如何从其成员的地址获取struct的起始地址?

struct type1 {
    //...
    int member1;
    //...
};
struct type1 obj1;
Run Code Online (Sandbox Code Playgroud)

并且ptr1是成员的地址member1obj1,如何定义
#define start_add(ptr1, type1, member1)获得OBJ1的
起始地址?

Gre*_*ill 14

你可以这样做offsetof:

#define start_add(ptr1, type1, member1) ((type1 *)((char *)(ptr1) - offsetof(type1, member1)))
Run Code Online (Sandbox Code Playgroud)

  • 我认为你在`(ptr1)`之前有一个额外的`&`.`ptr1`已经是会员的地址. (2认同)