什么是结构体偏移量?? 求指导

c语言
2025-05-21 01:46:56
推荐回答(2个)
回答(1):

比方一个结构体

struct tmp
{
    int a;
    int b;
}

定义一个实例  tmp*  tmpA = new tmp;

用tmpA ->b可以访问b变量

用tmpA  + 4 也可以访问b变量


结构体里面的元素都是顺序存储的,可以按元素的字节大小偏移来访问

注意,这里要考虑字节对齐的问题,x86机器都是按4字节对齐的,如果你的结构体里面有不是4字节倍数的变量,那么偏移会出错,要在文件头上加一个param pack(1) ,意思是按1个字节对齐

回答(2):

实际你问的是结构体成员对齐问题。

例如
struct
{
int a;
int b;
};
则b相对于结构体的偏移量就是4(因为int 为32位)