摘要: linux下开发经常会碰到这2个宏,总结下:1 #define offsetof(TYPE, MEMBER) ((size_t) & ((TYPE *)0)->MEMBER )宏功能:获得一个结构体变量成员在此结构体中的偏移量1. ( (TYPE *)0 ) 将零转型为TYPE类型指针;2. ((TYPE *)0)->MEMBER 访问结构中的数据成员;3. &( ( (TYPE *)0 )->MEMBER )取出数据成员的地址,即相对于0的偏移量,要的就这个;4.(size_t)(&(((TYPE*)0)->MEMBER))结果转换类型,siz 阅读全文
posted @ 2013-11-19 16:19 城市*斗士(技术) 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 转载自百度百科经历了一次面试,里面就有对sizeof的考量,特转载在这里。sizeof,我们称之为函数,这种叫法不准确,因为其对字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。其返回值类型为size_t,在头文件stddef.h中定义。这是一个依赖于编译系统的值,一般定义为1typedef unsigned int size_t;世上编译器林林总总,但作为一个规范,它们都会保证char、signed char和unsignedchar的sizeof值为1,毕竟char是我们编程能用的最小数据类型。语法sizeof有三种语法形式,如下:1231) sizeof( object 阅读全文
posted @ 2013-11-19 16:12 城市*斗士(技术) 阅读(1004) 评论(0) 推荐(0) 编辑
摘要: 上图是C中基本的类型分类,在做某些计算时会用到。比如调用sizeof时,需分清求的是哪种类型的值,类型不同占用的内存大小不同。好久没去想这些东西了,这里做个记录。 阅读全文
posted @ 2013-11-19 15:25 城市*斗士(技术) 阅读(168) 评论(0) 推荐(0) 编辑