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类的访问权限
    对象和对象引用
    equals和==
    类与继承(一)
    WebSocket简单介绍
    php获取请求的方式(get/post)
    php 使用jquery实现ajax
    PHP 系统常量及自定义常量
  • 原文地址:https://www.cnblogs.com/ligei/p/12502971.html
Copyright © 2011-2022 走看看