C++结构中的位字段和共用体

C++结构中的位字段:
与c语言一样,C++也允许指定占用特定位数的结构成员。这使得创建与某个硬件设备上的寄存器对应的数据结构非常方便。字段的类型应为整型或者枚举,接下来是冒号,冒号后面是一个数字,代表使用的位数。可以使用没有名称的字段来提供间距。每个成员都被称为位字段。
    struct test
    {
        int sn:4;
        unsigned int :4;
        bool flag:1;
        bool flag1:1;
    };

    test p={1,true,false};

可以像通常那样初始化,还可以使用标准的结构表示法来访问位字段。
位字段通常用在低级编程中。

共用体:
共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中一种数据类型,它里面的成员共享一块地址空间。简单来说,结构可以同时存储int,long和double,而共用体只能存储int或者long或者double。共用体的长度为其最大成员的长度。共用体的声明和结构很类似:
    union test
    {
        int p1;
        double p2;
        long p3;
    };
共用体的用途之一是,当数据项使用两种或多种格式,但不会同时使用时,可节省空间。
当共用体本身又是一个结构体的成员时,可以省略名称,即匿名共用体:
    struct Student
    {
        char name[20];
        int sex;  //0代表男性,1代表女性
        union 
        {
            int female_id;  //假设男学生id比女学生id长
            long male_id;
        };
    }t;

    t.sex=1;
    t.male_id=1;

    if(t.sex==0) printf("%ld\n",t.male_id);
    else printf("%d\n",t.female_id);
尽管现在系统的内存很大,好像没有节省那么一点空间。但C++还用于嵌入式系统编程,对这些应用程序来说,内存非常宝贵,则节省内存显得很有必要。另外,共用体常用于操作系统数据结构或硬件数据结构。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值