首页 > 其他 > 详细

计算结构体中偏移量的方法

时间:2014-03-08 05:59:16      阅读:468      评论:0      收藏:0      [点我收藏+]

今天看看几个月前老师让写的通用链表,突然的想起了一个问题,就是关于结构体的偏移

#include<stdio.h>
#include<stdlib.h>
#define offset(TYPE,MEMBER)   ( (long)&((TYPE *)0)->MEMBER ) 
typedef struct list
{
	int a;
	char b;
	long int c;
}list,*plist;
int main()
{
	printf("%ld",offset(list,a));
	printf("%ld",offset(list,b));
	printf("%ld",offset(list,c));
	return 0;
}

上面关于偏移量的计算方法:    (long)&((TYPE *)0)- MEMBER
 
首先将0强制转换成 结构体指针类型,为什么从0开始呢?  这就是为了避免计算偏移量的过程中减去起始位置的原因。

计算结构体中偏移量的方法,布布扣,bubuko.com

计算结构体中偏移量的方法

原文:http://blog.csdn.net/zhangxxxww/article/details/20710875

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!