转自:http://www.cnblogs.com/malecrab/p/5572119.html
1. 数据成员指针
对于普通指针变量来说,其值是它所指向的地址,0表示空指针。
而对于数据成员指针变量来说,其值是数据成员所在地址相对于对象起始地址的偏移值,空指针用-1表示。例:
代码示例:
struct X {
int a;
int b;
};
#define VALUE_OF_PTR(p) (*(long*)&p)
int main() {
int X::*p = 0; // VALUE_OF_PTR(p) == -1
p = &X::a; // VALUE_OF_PTR(p) == 0
p = &X::b; // VALUE_OF_PTR(p) == 4
return 0;
}