对于共用体变量不能整体引用,只能引用共用体变量的某个成员,引用方式与引用结构体变量成员相似,对于共用体成员可以赋值、输入、输出、计算等。例如:
union data
{
int a;
int b;
int c;
};
main()
{
union data u1;
u1.a=10;
u1.b=15;
u1.c=u1.a+u1.b;
printf("%d,%d,%d\n",u1.a,u1.b,u1.c);
}
程序分析:定义一个共用体data,其中含三个成员a、b、c,用共用体data定义变量u1,并分别为u1的各个成员u1.a、u1.b、u1.c赋值。最后输出的结果是什么呢?
假设为共用体变量u1分配的内存空间为2000,则u1中的各个成员a、b、c在内存中的首地址全部都是2000。程序执行过程如下:
①先为u1.a赋值10,2000开始地址段中存入10。
②再为u1.b赋值15, 2000地址段中存入15,覆盖刚存入的10。
③最后计算u1.a+u1.b,因为u1.a、u1.b共用一个地址,所以u1.a、u1.b的值全部都是15,相加的结果为30,将30赋给u1.c,成员c与成员a、b共用地址,所以c的值30又覆盖了原来存在该地址中的15,输出u1.a、u1.b、u1.c全部都是30。
程序执行,输出结果为:
30,30,30
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>