什么是offsetof?

offsetof,程序语言,该宏用于求结构体中一个成员在该结构体中的偏移量。

头文件:stddef.h

宏形式:

 size_t offsetof( structName, memberName )

说明:
1. 第一个参数是结构体的名字,第二个参数是结构体成员的名字。

2. 该宏返回结构体structName中成员memberName的偏移量。偏移量是size_t类型的。

代码实现如下:

typedef struct S
{char a;char c;int b;
}S;
#define OFFSETOF(type,name) ((int)&(((type*)0)->name))
int main()
{printf("%d\n", OFFSETOF(S, a));printf("%d\n", OFFSETOF(S, c));printf("%d\n", OFFSETOF(S, b));return 0;
}

自定义实现offsetof相关推荐

  1. 【C语言】深度探索offsetof,解析结构体的成员数组和指针

    目录 一.offsetof的功能 二.自定义offsetof 三.探索结构体 3.1结构体中的成员 3.2结构体指针和数组 该篇博客主要讲了自定义offsetof是如何实现的,为什么要这样写,以此沿生 ...

  2. nginx自定义模块编写-实时统计模块--转载

    原文:http://www.vimer.cn/2012/05/nginx%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%9D%97%E7%BC%96%E5%86%99- ...

  3. C语言 泛型链表 如何计算(结构体中各元素)相对内存地址?(字节对齐,结构体对齐)offsetof()函数 ( (struct X*)0 ) -> Y)语法(匿名结构体)

    示例: typedef struct _user {char name[20];char sex[20];int age;struct list_head mylist;//自定义结构体里保存双向循环 ...

  4. (四)Qt实现自定义模型基于QAbstractTableModel (一般)

    Qt实现自定义模型基于QAbstractTableModel 两个例子 例子1代码 Main.cpp #include <QtGui>#include "currencymode ...

  5. 自定义类型详解:结构体(内存对齐、位段) + 枚举 + 联合

    目录 一.结构体 1.特殊的声明 2.结构体自引用 3.结构体变量的定义和初始化 4.打印结构体 二.==结构体内存对齐== 1.内存对齐 结构体嵌套如何求 为什么存在内存对齐? 2.修改默认对齐数 ...

  6. (四)Qt实现自定义模型基于QAbstractTableModel

    目录: (一) Qt Model/View 的简单说明 .预定义模型 (二)使用预定义模型 QstringListModel例子 (三)使用预定义模型QDirModel的例子 (四)Qt实现自定义模型 ...

  7. Qt4_实现自定义模型

    实现自定义模型 Qt的预定义模型为数据的处理和查看提供了很好的方法.但是,有些数据源不能有效地和预定义模型一起工作,这时就需要创建自定义模型,以方便对底层数据源进行优化. 在介绍如何创建自定义模型之前 ...

  8. C语言_自定义数据类型

    目录 1.自定义数据类型_结构体 1.1 结构体类型的声明 1.1.1 匿名结构体 1.2 结构体的自引用 1.2.1 Typedef结构体重命名: 1.3 结构体变量的定义和初始化 1.4 结构体内 ...

  9. 自定义类型的深度剖析

    自定义类型 文章目录 自定义类型 1.结构体 1.1 结构体类型的声明 1.2 结构体的自引用 1.3 结构体变量的定义和初始化 1.4 结构体的内存对齐 1.5 结构体传参 2.枚举 3.联合体 扩 ...

最新文章

  1. React入门与实践
  2. 查看Oracle中存储过程长时间被卡住的原因
  3. 性能提升约 7 倍!Apache Flink 与 Apache Hive 的集成
  4. STM32中使用静态“字符串的方式”
  5. Left join后用and和where的区别
  6. python单向链表和双向链表的图示代码说明
  7. 桥接设计模式(Bridge)
  8. SQL注入攻击和防御
  9. java 关于时间处理
  10. Windows编译Nginx源码
  11. 短信炸弹jmeter验证方法
  12. java发送邮件-java工具类
  13. HTML Report报告无法正常展示的解决办法
  14. 在chrome的网址上搜索总是跳转到百度首页
  15. python 英文关键词提取_python TF-IDF算法实现文本关键词提取
  16. 语音识别引擎接口 将声音转换为文字显示
  17. HDOJ 5142 NPY and FFT
  18. macOS 安装 brew步骤
  19. 计算机图形物理知识,计算机图形学:虚拟和现实世界的融合
  20. css巧妙利用盒子---画图(二)

热门文章

  1. 武林传刀剑江湖录(下)攻略
  2. 高盛:苹果之后星巴克将是下一个折戟中国的美国巨头
  3. 关于用硬盘安装工具Win6Ins_v1.2.0.62安装时提示缺少hildr.mbr文件的解决办法
  4. 英雄对决游戏开发流程(格斗游戏,电脑桌面对打游戏)附java源码
  5. 浅议企业对员工的压力管理
  6. truncate命令简介
  7. 我的世界java老崩溃怎么办_我的世界崩溃什么原因
  8. DNS服务器在因特网中起什么作用,网络协议dns的作用是什么
  9. plt.grid()、plt.scatter()、plt.plot()、plt.arrow()、plt.text()函数讲解
  10. 博士毕业论文致谢句句诛心,博士女朋友看了这样回应!