// [8/24/2015 wangjian-pc]
// 获取类成员的偏移量
#include <iostream>
struct Point3D
{
int x;
int y;
int z;
};
int main()
{
Point3D* pPoint = NULL;
int offset = (int)(&(pPoint)->z);
printf("%d", offset);
system("pause");
return 0;
}
// 输出8。由于在pPoint->z的前面加上了取地址符号,运行到此时的时候,会在pPoint的指针地址上加z在类型Point3D中的偏移量8。
// 由于pPoint的地址是0,因此最终offset的值是8。
// &(pPoint->z)的语意是求pPoint中变量z的地址(pPoint的地址0加z的偏移量8),并不需要访问pPoint指向的内存。只要不访问非法的内存,程序就不会出错。
// 输出:8
获取类成员的偏移量
最新推荐文章于 2022-06-11 22:29:04 发布