已知struct结构体里面的某一变量的地址,问怎么求struct的首地址?
//#include<stdio.h>
struct A
{
...
int i;
...
};
//int main()
//{
//printf("%p\n",&(((struct A *)0)->i));
//return 0;
//}
已知i的地址,问怎么求struct的首地址。。。。室友思路如程序所叙,求对i的偏移量,然后自然而然可求A的首地址。但我没听明白,求高手解释。。。
[解决办法]
&(((struct A *)0)->i
#include <stddef.h>
#include <stdio.h>
struct A {
char c;
short s;
int i;
};
int main(int argc, char *argv[])
{
struct A a;
printf("%p\n", &a);
printf("%p\n", &a.i);
printf("%d\n", offsetof(struct A, i));
return 0;
}