&((struct s*)0)->d的相关详解

#include <stdio.h>

struct s
{
 int a;
 int b;
 int c;
 char d;
};
void main()
{
 printf("%d",&((struct s *) 0)->a);        //把结构体s的起始位置视为0,返回结构体s的成员a的位置【输出结果为0】    

printf("%d",&((struct s *) 0)->b);        //把结构体s的起始位置视为0,返回结构体s的成员b的位置【输出结果为4】

printf("%d",&((struct s *) 0)->c);        //把结构体s的起始位置视为0,返回结构体s的成员c的位置【输出结果为8】

printf("%d",&((struct s *) 10)->c);        //把结构体s的起始位置视为10,返回结构体s的成员c的位置【输出结果为18】

printf("%d",&((struct s *) 10)->d);        //把结构体s的起始位置视为10,返回结构体s的成员d的位置【输出结果为22】
}

注:int类型占4个字节大小的空间

posted @   gǒが油メo  阅读(493)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示