结构体成员地址获得结构体起始地址
经常我们在一些开源的或者内核代码中会看到。
#define TYPE_STRUCT(ptr, type, member)((type *)((char*)(ptr)-(unsigned long)(&((type *)0)->member)))
ptr :结构体的某个成员地址。
type:结构体名
member:该成员名
struct_ptr -> member
结构体首地址+偏移量
(unsigned long)(&((type *)0)->member))
((type *)((char*)(ptr)-(unsigned long)(&((type *)0)->member)))
结构体首地址=成员地址-该成员在该结构体里的偏移量
((type *)((char*)(ptr)
转载于:https://www.cnblogs.com/yml435/p/6644776.html
结构体成员地址获得结构体起始地址相关推荐
- 在Golang里如何实现结构体成员指针到结构体自身指针的转换
原文地址:http://goworldgs.com/?p=37 在C语言中有一个经典的宏定义,可以将结构体struct内部的某个成员的指针转化为结构体自身的指针.下面是一个例子,通过FIELD_OFF ...
- lru算法C语言结构体指针,在Golang里如何实现结构体成员指针到结构体自身指针的转换...
在C语言中有一个经典的宏定义,可以将结构体struct内部的某个成员的指针转化为结构体自身的指针.下面是一个例子,通过FIELD_OFFSET宏计算结构体内一个字段的偏移,函数getT可以从一个F*的 ...
- C语言:指针的偏移步长、结构体成员的偏移量、嵌套结构体成员的偏移量、结构体的内存对齐
文章目录 1 不同类型指针的偏移步长 2 结构体成员的偏移量 3 嵌套结构体成员的偏移量 4 结构体的内存对齐 4.1 内存对齐的原因与优点 4.2 结构体内存对齐的规则 4.3 结构体嵌套结构体时的 ...
- 结构体之引用结构体成员变量
引用结构体成员变量 一个结构体包含一个或者多个成员变量,在实际使用中,就需要对其成员变量进行引用,对于一个已经定义了的结构体变量和一个指向该结构体的指针变量. 可以用一下三种情况引用结构体 成员变量. ...
- 【Linux 内核 内存管理】虚拟地址空间布局架构 ③ ( 内存描述符 mm_struct 结构体成员分析 | mmap | mm_rb | task_size | pgd | mm_users )
文章目录 一.mm_struct 结构体成员分析 1.mmap 成员 2.mm_rb 成员 3.get_unmapped_area 函数指针 4.task_size 成员 5.pgd 成员 6.mm_ ...
- c/c++教程 - 1.10 结构体 使用typedef定义struct结构体 结构体数组 结构体指针 结构体嵌套 结构体做函数参数 结构体const
十二.结构体 (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型. 参考视频:https://www.bilibili.com/video/BV1et411b ...
- 结构体struct及计算结构体大小
目录 1.结构体类型的声明 2. 用结构体类型来创建结构体变量并初始化 3.结构体的嵌套使用 4.结构体传参 5. 结构体成员的访问 1.结构体类型的声明 结构是一些值的集合,这些值称为成员变量.结 ...
- 结构体引用_C/C++结构体完全攻略
结构体是一个由程序员定义的数据类型,可以容纳许多不同的数据值.在过去,面向对象编程的应用尚未普及之前,程序员通常使用这些从逻辑上连接在一起的数据组合到一个单元中.一旦结构体类型被声明并且其数据成员被标 ...
- c语言 结构体 初始化,C语言结构体初始化
C语言结构体初始化教程 在 C语言结构体初始化 语法 struct structName varName = {fileldValue1, fileldValue2, fileldValue3}; 参 ...
- 对C语言 结构数组 指向结构变量的指针 指向结构数组的指针
一.结构数组的定义 数组的元素可以是结构类型的.结构数组的每一个元素都是具有相同的结构类型的下标结构变量.在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体. 如:一个班的学生的档案,一个车 ...
最新文章
- 超阿里、大华,澎思科技行人再识别(ReID)技术刷新三大数据集记录
- 利用commons-fileupload 上传图片(包含表单数据)
- 基于BASYS2的VHDL程序——交通灯(状态机版)
- 查看手机截图的坐标信息
- 学Java可以看哪些书?6本Java书籍推荐
- STM32f103 —— timer
- 使用Red Gate Sql Compare 数据库同步工具进行SQL Server的两个数据库的结构比较、同步...
- LeetCode刷题(34)-Rotate List
- Apache常见配置及问题
- 熊猫烧香delphi编写免费源代码
- Amesim学习——传热基础案例:烧红铁棒在空气中冷却
- pyqt+pyqtgraph+lka(界面制作)--优化版
- c语言oj1065统计,东方博宜OJ
- .net core 下文件压缩打包下载
- Flutter 项目实战 截图分享到微信|QQ|微博 十二
- RabbitMQ, Kafka和Pulsar (一)
- 计算机编程那个好学点,计算机编程好学吗?
- Excel打印时完整显示合并的单元格区域
- Linux MMC原理及框架详解
- SAP 公司间销售配置原理和步骤