如:struct student
{
int a;
char b[20];
double ccc;
}
则:FIND(student,a)//等于0
FIND(student,b)//等于4
#define FIND(sturct,e) (size_t)&(((struct*)0)->e)
因为该结构体首地址就是为0,所以其实就是得到成员e的偏移量
{
int a;
char b[20];
double ccc;
}
则:FIND(student,a)//等于0
FIND(student,b)//等于4
#define FIND(sturct,e) (size_t)&(((struct*)0)->e)
因为该结构体首地址就是为0,所以其实就是得到成员e的偏移量
本文介绍了一种计算C/C++中结构体成员相对于结构体首地址偏移量的方法,通过宏定义实现,便于理解结构体内存布局。

被折叠的 条评论
为什么被折叠?



