我是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;
}