&((struct*)0)->a与成员指针

来源:互联网 发布:足球数据分析网站 编辑:程序博客网 时间:2024/06/04 18:32

有一个结构体:如

struct A

{

    char c;

    int a;

    long i;

};

 

问&((struct*)0)->a是什么意思,什么情况下用:

 

开始还以为要访问到地址0x00000000呢,原来&和->运算顺序是右结合的,经过研究发现它返回的是结构体中成员a的相对偏移地址!

 

原来C++中也有相似的操作符,不过一般人不经常用,我也是后来才发现的,操作符.*和->*就是成员指针

class X

{

int a;

double b;
}

 

X cx;

int X::* pmi=&cx.a;

 

cx.*pmi; //就指向class X中成员a,pmi的值就是a在X中的偏移量

 

C++中只有类成员指针,而没有类成员引用。