介绍offsetof函数,以及用宏计算结构体中某变量相对于起始位置的偏移量

写一个宏计算结构体中某变量相对于起始位置的偏移量

  • offsetof函数
  • 宏实现
    • 题解
    • 代码及运行结果

offsetof函数

介绍offsetof函数,以及用宏计算结构体中某变量相对于起始位置的偏移量_第1张图片
offsetof函数返回type类型member相对于起始位置的偏移量。
介绍offsetof函数,以及用宏计算结构体中某变量相对于起始位置的偏移量_第2张图片
运行结果可以参考结构体内存对齐相关内容

宏实现

题解

介绍offsetof函数,以及用宏计算结构体中某变量相对于起始位置的偏移量_第3张图片

代码及运行结果

#define OFFSETOF(type,member)    (int)&(((type*)0)->member)
//在0处放一个结构体,把0当一个结构体地址
struct s
{
	char a;
	int b;
	double c;
};
int main()
{
	printf("%d\n", OFFSETOF(struct s, a));
	printf("%d\n", OFFSETOF(struct s, b));
	printf("%d\n", OFFSETOF(struct s, c));

	return 0;
}

你可能感兴趣的:(C语言从入门到精通,算法,数据结构,c语言)