比方一个结构体
struct tmp
{
int a;
int b;
}
定义一个实例 tmp* tmpA = new tmp;
用tmpA ->b可以访问b变量
用tmpA + 4 也可以访问b变量
结构体里面的元素都是顺序存储的,可以按元素的字节大小偏移来访问
注意,这里要考虑字节对齐的问题,x86机器都是按4字节对齐的,如果你的结构体里面有不是4字节倍数的变量,那么偏移会出错,要在文件头上加一个param pack(1) ,意思是按1个字节对齐
实际你问的是结构体成员对齐问题。
例如
struct
{
int a;
int b;
};
则b相对于结构体的偏移量就是4(因为int 为32位)