</pre><pre>
结构体中的偏移量是指:结构体中元素地址相对于大结构体起始地址的偏移大小
</pre><pre>
定义如下一个结构体:
typedef struct AdvTeacher
{
char name[64]; //64字节 t1.age 相对结构体的偏移量是64
int age; //4
int p; //4 t1.p 相对结构体偏移量是68
char*pname2;
}AdvTeacher;
AdvTeacher t1;
AdvTeacher*p = NULL;
strcpy(p,"dddd"); //向指针所指向的内存空间拷数据 等价于向0地址拷数据 一拷就断
这句话 是在cpu中计算 并没有操作内存 所以能通过 并且指针就是一个变量 对变量加加减减 天经地义
p - 1; //编译通过 运行通过
指针与指针相减是没问题的
p - p;//没问题 0-0
p + p; //错误
因为现在指向0地址 打印出的大小相对于大结构体起始地址的偏移量
int offsize= (int)&(p->age);//相对于0的偏移地址
int offsize =(int) &(((AdvTeacher*)0)->age); //64 偏移量 //&(t1.age)
AdvTeacher t1;
AdvTeacher*p = NULL;
p = &t1; //这样做的话 下面offsize1 相当于求出age的真实地址
int offsize1 = (int)&(p->age); //相对于0的偏移地址 因为现在指向0地址 打印出的大小相对于大结构体起始地址的偏移量
<span style="color:#ff6600;">//如果想计算相对结构体大地址的偏移量的话可以这样干 把指针p强制转换为int在减</span>
int offsize2 = (int)&(((AdvTeacher*)0)->age)-(int)p;