码迷,mamicode.com
首页 > 其他好文 > 详细

[转载:答错了]取结构体变量的便宜量.

时间:2016-11-21 23:22:00      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:char   类型   pre   cal   return   结构   输出   ack   答案   

运行下列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的地址0z的偏移量8,并不需要访问pPoint指向的内存。只要不访问非法的内存,程序就不会出错。

[转载:答错了]取结构体变量的便宜量.

标签:char   类型   pre   cal   return   结构   输出   ack   答案   

原文地址:http://www.cnblogs.com/dsdr/p/6087021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!