首页 > 代码库 > [转载:答错了]取结构体变量的便宜量.
[转载:答错了]取结构体变量的便宜量.
运行下列C++代码,输出什么?
struct Point3D { int x; int y; int z; }; int _tmain(int argc, _TCHAR* argv[]) { Point3D* pPoint = NULL; int offset = (int)(&(pPoint)->z); printf("%d", offset); return 0; }
答案:输出8。由于在pPoint->z的前面加上了取地址符号,运行到此时的时候,会在pPoint的指针地址上加z在类型Point3D中的偏移量8。由于pPoint的地址是0,因此最终offset的值是8。
&(pPoint->z)的语意是求pPoint中变量z的地址(pPoint的地址0加z的偏移量8),并不需要访问pPoint指向的内存。只要不访问非法的内存,程序就不会出错。
[转载:答错了]取结构体变量的便宜量.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。