当前位置: 首页 > news >正文

C语言offsetof宏

目录

  • 开头
  • 1.什么是offsetof宏?
  • 2.offsetof宏的实际应用(这里只列举其一)
    • 求结构体a中的所有成员变量的偏移量
    • ……
  • 结尾

开头

大家好,我叫这是我58。今天,我们要学一下关于C语言中的offsetof宏的知识。

1.什么是offsetof宏?

offsetof宏,来自于stddef.h头文件,用来返回某一个结构体中的成员变量的偏移量,它的内部结构是这样子的:offsetof (type,member)1,而它的内部是这样子的:((size_t)&(((type*)0)->member)),其中,type代表了某一个结构体,而member则代表了这个结构体中的某一个成员变量,而且,这个宏的返回值的类型是size_t,因为某一个结构体中的第一个成员变量的偏移量一定为0,第二个成员变量的偏移量一定会比第一个成员变量的偏移量多一点,以此类推,不可能出现结构体得成员变量的偏移量为负数的情况,所以,这个宏的返回值的类型是size_t,而如果把type代入某一个结构体,member代入另一个结构体的成员变量,就会报错,因为这个宏不能跨结构体来求出偏移量,在看到这里之后,接下来就要讲一下offsetof宏的实际应用了。

2.offsetof宏的实际应用(这里只列举其一)

求结构体a中的所有成员变量的偏移量

union as {int ia;long long l;
};
struct a {int i;char y;union as a;
};
int main() {printf("%d %d %d\n", offsetof(struct a, i), offsetof(struct a, y), offsetof(struct a, a));return 0;
}

……

结尾

看到这里了,可以评论来互动一下我哦。


  1. 选自C语言中offsetof宏的简介 ↩︎

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Sublime Text 配置 Terminal (CMD)
  • 查看和访问信号记录数据
  • 【C语言】循环
  • 安装webman/admin记录
  • 采用ELK搭建日志平台,安装elasticsearch-head
  • Vue学习--- vue3 集成遇到的部分问题与解决
  • 小白之 FastGPT Windows 本地化部署
  • 案例:LVS-DR模式
  • 大模型备案全网最详细流程解读(附附件+重点解读)
  • 使用 Python 和 PyQt5 构建多线程图片下载器
  • 单HTML文件集成vue3+ElementPlus的使用
  • 构建高效NLP管道:PydanticOutputParser与Langchain的结合
  • 机器学习课程学习周报九
  • 【文档合集】软件类常用文档整理大全,软件工程,软件项目管理,技术标书方案,模
  • 【系统规划与管理师】【案例分析】【课后习题】第九章 IT服务营销
  • 《Java编程思想》读书笔记-对象导论
  • 【347天】每日项目总结系列085(2018.01.18)
  • angular组件开发
  • ECMAScript入门(七)--Module语法
  • go语言学习初探(一)
  • iOS 系统授权开发
  • JWT究竟是什么呢?
  • Median of Two Sorted Arrays
  • mysql 数据库四种事务隔离级别
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 简单数学运算程序(不定期更新)
  • 理清楚Vue的结构
  • 新书推荐|Windows黑客编程技术详解
  • Java性能优化之JVM GC(垃圾回收机制)
  • k8s使用glusterfs实现动态持久化存储
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • ###STL(标准模板库)
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (1)(1.11) SiK Radio v2(一)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Oracle)SQL优化技巧(一):分页查询
  • (力扣)循环队列的实现与详解(C语言)
  • (区间dp) (经典例题) 石子合并
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转载)从 Java 代码到 Java 堆
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ***利用Ms05002溢出找“肉鸡
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .libPaths()设置包加载目录
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • [2024-06]-[大模型]-[Ollama]- WebUI
  • [BJDCTF2020]EzPHP1
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [C++][opencv]基于opencv实现photoshop算法色阶调整