我是StackOverflow的新手,所以很抱歉,如果已经讨论了此主题。

我正在一个项目上,我需要使用最少的内存,所以我的问题是:是否可以通过拥有该结构字段的地址来访问该结构的节点地址。
例如,我有这个结构:

typedef struct SLL{
    char *name;
    int *id;
    struct SLL *next;
    }SLL;


在我的代码中的某处,我获得了id的地址...因此可以通过使用id的地址来获得整个节点的地址?

最佳答案

考虑offsetof <stddef.h>

typedef struct SLL{
    char *name;
    int *id;
    struct SLL *next;
    }SLL;

int main()
{
   SLL *p=malloc( sizeof(SLL));
   void *id=&p->id;
   void *test= id - offsetof(SLL, id);
   printf("SLL=%p  test=%p\n", p, test);
   return 0;

}

10-04 13:41