共用体相关

在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(Union),它的定义格式为:

     union 共用体名{
           成员列表
     };

共用体有时也被称为联合或者联合体,这也是 Union 这个单词的本意。

结构体和共体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。

例如

#include<stdio.h>
void main()
{
    union{
        int a;
        int b;
    }s[3],*p;

    int n=1,k;
    for(k=0;k<3;k++){
        s[k].a=n;
        s[k].b=s[k].a*2;
        n+=2;
        }

    p=s;
    printf("%d,%d\n",p->a,++p->a);                
}

结果:

分析:

1.首先visual C++6.0 编译器; printf()函数从后面向前面运算,先算++p->a,再算p->a

2.“->”的优先级比”++”高,++p->a等价于++(p->a)

3.在三次循环中,k=0时,s[0].a=1,s[0].b=2,s[0].b把s[0].a的1覆盖,因此s[0].a=s[0].b=2;

                            k=1时,s[1].a=s[1].b=6;

                            k=2时,s[2].a=s[2].b=10,

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值