c++::获取结构体中某 个成员相对结构体起始位置的偏移
来源:互联网 发布:阿里云cdn怎么关闭 编辑:程序博客网 时间:2024/06/08 00:55
我们使用宏offsetof,这个宏具体是什么?怎么用? 接下来我来详细说明:
【offsetof的定义】:
在MSDN上是这样定义的:size_t offsetof( structName, memberName );
1)第一个参数是结构体的名字,第二个参数是结构体成员的名字
2)该宏返回结构体中成员的偏移量,返回值是size_t 类型的
【offsetof的使用】:
1)我们这里为了方便,给出offsetof的参数是s,m,即offsetof(s,m),
2)我们怎么具体使用呢:
可以这样定义:#define offsetof(s,m) (size_t)
&(((s*)0)->m)
#include<iostream>using namespace std;#define offsetof(s,m) (size_t) &(((s*)0)->m)struct N{int i;char j;double k; };int main(){cout<<offsetof(N,j)<<endl;return 0;}
&(((s*)0)->m)
3)到这里很多同学肯定有疑问,别着急,我来解析下这个式子:
(s*)0:是骗编译器说有一个指向类(或者结构体)s的指针,它的值是0
&(((s*)0)->m)这个是取结构体中s的成员m
由于这个类的基址是0,这时m的地址当然就是其在结构体中的偏移地址喽
4)下面我来给出一个测试的代码:
0 0
- c++::获取结构体中某 个成员相对结构体起始位置的偏移
- C和指针之结构体大小和成员变量位置距离结构开始存储的位置偏移字节
- c语言 获取结构体成员偏移量方法
- 获取结构体某成员偏移
- 如何获取结构体某成员的偏移地址
- 如何获取结构体某成员的偏移地址
- 如何获取结构体某成员的偏移地址
- ANSI C中获取结构体成员偏移量量的办法
- 定义一个宏获取结构体中变量相对结构体开始的偏移量
- 【LibUIDK界面库系列文章】计算结构体中成员相对this的偏移
- 得到结构体中成员的偏移
- 求结构体成员的偏移量
- 结构体成员变量的偏移值
- 结构体成员偏移量的计算
- 结构体成员偏移地址
- 结构体成员偏移量
- 结构体成员地址在结构体内的偏移
- 不实例化结构体获取结构体成员在结构体中的偏移量
- 数据业务建立流程之DcTracker创建过程
- 桶排序(简单)
- Android数据业务发起流程
- 解决 “IntelliJ IDEA 使用SVN版本控制频繁弹出输入 用户名和密码的弹框” 问题
- VS2013 配置使用微软开源sdk: C++ REST SDK 及运行官方的 JSON例子
- c++::获取结构体中某 个成员相对结构体起始位置的偏移
- Fresco介绍 - 一个新的android图片加载库
- SSH框架之Hibernate的程序执行流程、Set集合映射、Set集合的数据保存
- 函数的参数的默认值
- angular项目流程功能实现
- Codeforences 23E Tree
- 记两例程序问题排查
- 互联网运营、产品岗一定要看的面试题(一线二线互联网企业面试题整理)
- 异步复位同步释放