Linux内核代码里的一个宏(Linux内核里很多结构体之间是通过某一成员变量相互寻址的),感觉挺巧妙。大概意思是:

#define get_addr(type, member, mem_addr)    (type*)(mem_addr - &(((type*)0)->member))

typedef struct{

int a;

int b;

int c;

}test_t test;

addr = get_addr(test_t, c, &test.c);

这样可以绕过字节对齐问题。

转载于:https://www.cnblogs.com/shenfei2031/archive/2011/10/28/2227907.html

如何通过一个结构体成员变量的地址找到该结构体的首地址?[备忘]相关推荐

  1. c语言结构体成员变量默认值,C语言结构体要点笔记

    近日,做一个东西却发现自己在C语言,特别是结构体这个知识点上还缺乏认识.所以在学习了网友的分享后,下面在下文记录一些重要的要点吧. 一.struct是一种复合数据类型(这一点很重要,结构体只是一个类型 ...

  2. c语言结构体成员变量私有化,C语言中结构体变量私有化详解

    C语言中结构体变量私有化详解 背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚 ...

  3. 结构体之引用结构体成员变量

    引用结构体成员变量 一个结构体包含一个或者多个成员变量,在实际使用中,就需要对其成员变量进行引用,对于一个已经定义了的结构体变量和一个指向该结构体的指针变量. 可以用一下三种情况引用结构体 成员变量. ...

  4. C语言中结构体成员变量前的点的作用

    /*  * 结构体中成员变量前的点: 结构体成员指定初始化  * 1.该结构体要先定义   * 2.一个成员变量赋值完后用逗号而不是分号   * 3.初始化语句的元素以固定的顺序出现,和被初始化的数组 ...

  5. vs code 不能正确补全结构体成员变量的解决方法

    vs code 在补全c语言代码时(keil工程文件)不能正确提示结构体成员变量. 解决方法: 在系统setting.json文件中找到C_Cpp.intelliSenseEngine配置删掉(或者将 ...

  6. c语言箭头指针的作用,C语言中,结构体成员变量的点和箭头

    C语言中,调用成员变量用点还是用箭头,取决于当前的ID是指针还是结构体本身. 如:typedef struct { float height; float weight; } Person; int  ...

  7. 关于Visual Assistant X助手在定位函数及结构体成员变量不准确的问题

    我们在使用VS开发程序时,习惯使用Visual Assistant X助手来协助我们工作.Visual Assistant X确实给我们带来了很多的便利和好处,但是在有些情况下,也会给我们带来一些问题 ...

  8. 一个类怎样引用另外一个类的成员变量或方法

    通常常用的有:A类有个变量C,B类想调用C方法一:变量C是非静态的(static),那么在B类中创建一个A类的对象,用对象.变量名就可以了方法二:变量C是静态的(static),直接用类.变量名 详细 ...

  9. 设计一个长方形类 java_用java设计一个长方形类,成员变量包括长和宽.方法:计算面积和周长,有相应的set和get方法...

    共回答了17个问题采纳率:100% /** * 长方形类 */ class Rectangle{ /** * 宽 */ private double width; /** * 高 */ private ...

最新文章

  1. 小米发力AI场景下的“快应用”,投百亿资源扶持开发者
  2. weblogic集群安装心得-程序包发布
  3. 安卓开发中RelativeLayout中的各个属性
  4. 201621123053 张雨阳软工作业2
  5. Maven项目发布的配置
  6. python函数命名空间_python (函数命名空间和作用域)
  7. ubuntu18.04安装mysql8.0中遇到的问题及解决方法
  8. 在linux缓存里写数据,缓存策略
  9. TreeLSTM Sentiment Classification
  10. Java的反射 基础+简单复制对象实例
  11. RAC动态资源(DRM)管理介绍
  12. Windows Server 2012 R2 打印服务器的设置与管理-深博-专题视频课程
  13. 黑盒测试设计测试用例的方法【修改】
  14. 如何去优化一个网站做到更好
  15. 告别切图标注-Sketch/PS+Zeplin
  16. CentOS7 安装Samba
  17. Java 17新特性,快到起飞?
  18. java的入口函数_java入口函数有几种
  19. 这样用横线本做日计划真的太太太喜欢了
  20. 【927. 三等分】

热门文章

  1. SimpleDet: 一套简单通用的目标检测与物体识别框架
  2. 世界第一编程语言是Python「为什么那么火?」
  3. Python中if name main的作用
  4. 火爆全网络!这个GitHub项目开源了!搞定目标检测、图像识别
  5. 笔记 | 《机器学习》手推笔记更新集成学习(Boosting和随机森林)
  6. 【通俗易懂】手把手带你实现DeepFM!
  7. 值得玩味儿的14个Python编程小技巧
  8. 理解CapsuleNetwork2
  9. springboot并发上传文件_springboot实现单文件和多文件上传
  10. 信息安全工程师考试大纲-科目1:信息安全基础知识