文章目录

  • C语言中 offsetof 的使用
    • 头文件以及宏原型
    • 函数描述
    • 示例程序:

C语言中 offsetof 的使用

头文件以及宏原型

       #include <stddef.h>size_t offsetof(type, member);

函数描述

  这个宏会返回一个结构体成员相对于结构体开头的字节偏移量(**经过结构对其之后**):- type 结构体名称- 结构体成员名称这个宏非常有用,由于结构体对其的问题,整个结构体的大小并不是所有成员大小之和,往往要比他们的和大,(当然我们也可以执行结构体按一个字节进行对其),所以利用这个宏可以很好计算出每个结构体成员相对于结构体开头偏移的字节数。

示例程序:

#include <stddef.h>
#include <stdio.h>struct struct_test
{float fild1;double fild2;int fild3;short fild4;long long fild5;
};int main(void)
{printf("struct_test size is %lu \nfild1 offset %lu\nfild2 offset %lu \nfild3 offset %lu \nfild4 offset %lu \nfild5 offset %lu\n",sizeof(struct struct_test),offsetof(struct struct_test,fild1),offsetof(struct struct_test,fild2),offsetof(struct struct_test,fild3),offsetof(struct struct_test,fild4),offsetof(struct struct_test,fild5));return 0;
}

运行结果如下:

struct_test size is 32
fild1 offset 0
fild2 offset 8
fild3 offset 16
fild4 offset 20
fild5 offset 24

C语言中 offsetof 的使用相关推荐

  1. c语言中struct和c++中class实例对比

    前言 实现游戏中简单的打怪升级的功能 c语言中的struct #include <stdio.h>typedef void(*Train)(struct player*, int); ty ...

  2. 关于C语言中printf函数“输出歧视”的问题

    目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...

  3. C语言中“野指针”、“悬空指针”是什么?

    目录 1."野指针"(wild pointer) 2."悬空指针"(dangling pointer) 1."野指针"(wild point ...

  4. c+语言+null,C/C++语言中NULL、'\0’和0的区别

    NULL.'\0'和0的值是一样的,都是0,不过它们的表现形式不一样: 1. NULL: 即空指针,不过在C和C++中并不一样.在VS 2013的库文件string.h中可以看到如果定义. 1 /* ...

  5. 关于C语言中的malloc和free函数的用法

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  6. python global函数_如何使用python语言中的global关键字获取函数值

    在python语言中,如果在函数外层定义了一个全局变量a,函数内部又有一个同名的局部变量,想要这个全局变量的值改成为局部变量的值,可以使用global.下面利用一个实例说明如何实现这个场景,操作如下: ...

  7. c语言中的if语句_If ... C中的其他语句解释

    c语言中的if语句 Conditional code flow is the ability to change the way a piece of code behaves based on ce ...

  8. C 语言中 void* 详解及应用介绍

    void 在英文中作为名词的解释为 "空虚.空间.空隙",而在 C 语言中,void 被翻译为"无类型",相应的void * 为"无类型指针" ...

  9. java 英文字符 字节_3、在JAVA语言中,每个英文字符占 个字节,每个中文汉字占( )个字节。...

    [判断题]中心原子中的几个原子轨道杂化时,必形成数目相同的杂化轨道. [单选题]集合 用区间表示正确的是 ( ) [单选题]15.Java语言的类间的继承关系是 [单选题]8.编译Java Appli ...

最新文章

  1. 【AI】dlib中图像标注工具 imglab 详细说明
  2. (剑指Offer)面试题18:树的子结构
  3. v-show 与 v-if 的区别
  4. git 文件全部标红_git冲突解决,代码冲突、合并冲突。【IDEA版本】
  5. matlab中antoine方程应用,Antoine方程 安托因方程
  6. 2021年南宁二中高考成绩查询,2021广西高考圆满结束,6月23日可查询成绩
  7. 网页开发部署-开发工具MyEclips+Tomcat+mysql
  8. ThinkPHP框架 _ 学习11
  9. java 导出密钥_java-如何从密钥库中导出.key和.crt
  10. 5加载stm32 keil_【STM32笔记】在SRAM、FLASH中调试代码的配置方法(附详细步骤)...
  11. spss多元线性回归散点图_SPSS19.0实战之多元线性回归分析
  12. excel宏 批量生成返回目录
  13. android自动亮度流程,Android 亮度自动调节是如何实现的?
  14. 【Python】列表解析式
  15. Linux学习笔记RHEL 7(九)--RHEL7.0 DNS服务配置
  16. 用java实现一个算术测试软件,最新Java算术测试
  17. LTE学习笔记--PHY--TM模式
  18. JS基础--强制类型转换(易错点,自用)
  19. 微信小程序的路由,以及生命周期
  20. linux rm-rf误删文件 思路

热门文章

  1. 《通关!游戏设计之道》笔记:序章(一)
  2. 树莓派显示屏的休眠和唤醒
  3. 开启从小白到精通的基于文献计量学论文写作之旅
  4. 马蜂窝php面试题,马蜂窝开放平台
  5. idea中修改中文字体为微软雅黑
  6. 什么是设计?设计为什么需要准则?
  7. 华为云计算FC创建虚拟机
  8. 【IPD】集成产品开发培训课程「3月4-5日」
  9. 工商管理专业知识与实务(中级)【5】
  10. SPD模式到底是什么鬼?