zoukankan      html  css  js  c++  java
  • 计算结构体内元素的偏移量宏

    #define offsetof(type,member) ((size_t) &((type *)0)->member)

    该宏定义含义为:在不生成结构体实例的情况下计算结构体成员的偏移量。

    一:结构体变量的某成员的地址等于该结构体变量的基址加上结构体成员变量在结构体中的偏移量

    二:#define offsetof(type,member) ((size_t) &((type *)0xff)->member-0xff):这里假设type类结构体的

    基地址为0xff,则成员变量number的地址为:0xff+sizeof((type*)->number),成员变量number的偏移量

    为成员变量的地址减去结构体的基地址:所以成员变量number的偏移量为((type *)0xff)->member-0xff。

    (type*)0:这个结构体变量的基址就是0。所以结构体成员变量的地址的大小在数值上就等于该结构体

    成员在结构体中的偏移量。

    三:(type*)0:将0地址转换为type*结构体指针。

    四:(type *)0)->member:指向type*结构体的成员变量number。

    五:&((type *)0)->member:取成员变量number的地址。

    六: ((size_t) &((type *)0)->member):将成员变量number的地址转换为size_t类型。可以知道size_t是

    无符号整形。

  • 相关阅读:
    Java中数组遍历
    数组常见异常
    数组的访问
    Java中数组的定义方式
    Java中数组的概念与特点
    node爬虫技术初探
    node相关内容
    vs code快捷键
    vue 入门开发
    es6 常见用法
  • 原文地址:https://www.cnblogs.com/ligei/p/12502971.html
Copyright © 2011-2022 走看看