首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

offsetof偏移量计算,该怎么处理

2014-01-21 
offsetof偏移量计算这个偏移量计算如何解释?#includestdio.h#define offsetof(TYPE, MEMBER) ((size_t)

offsetof偏移量计算
这个偏移量计算如何解释?
#include<stdio.h>
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER)
struct mydata{
    int num;
    char sex;
    char name;
};

int main()
{
    struct mydata kk;
    printf("hello,%d\n", offsetof(struct mydata, name));

    return 0;
}
结果:5
大家如何解释 ((size_t) &((TYPE*)0)->MEMBER)?谢谢
[解决办法]
求type类型变量中member成员相对变量起始地址的偏移量。
如果变量的起始地址是0,那么member成员的地址就等于偏移量
[解决办法]
计算MEMBER域在结构体中的偏移量

引用:
这个偏移量计算如何解释?
#include<stdio.h>
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER)
struct mydata{
    int num;
    char sex;
    char name;
};

int main()
{
    struct mydata kk;
    printf("hello,%d\n", offsetof(struct mydata, name));

    return 0;
}
结果:5
大家如何解释 ((size_t) &((TYPE*)0)->MEMBER)?谢谢

[解决办法]
这里只用了&(取地址), 而没有使用 0 地址(看作NULL)中的内容
所以,没有问题。
[解决办法]
引用:
目的是 偏移量计算这个我懂。 我想问下 这个 ((size_t) &((TYPE*)0)->MEMBER)怎么理解? 
是 ((TYPE*)0)->MEMBER 的地址吗?此时假设TYPE的地址为0?


是的

热点排行