数据类型之共用体

共用体

共用体是构造数据类型的一种
共用体也常被称为联合体

共用体的实质

共用体是单个存储单位上的元素集合
注意:元素都在一个存储单位上,这个存储单位的大小是最大数据类型的大小

共用体的作用

我们用共用体并不是内存空间不够用
用共用体时,主要利用”元素都存储到一个存储单位上”这一特性

共用体的组成

  • 共用体是依靠不同的数据类型的组合创建起来的,数组的元素可以是之下的任何几种的组合
    1. 整型
    2. 浮点型
    3. 字符型
    4. 指针型
    5. 枚举型
    6. 数组
    7. 结构体
    8. 共用体

共用体的声明

/*共用体的声明不分配内存空间*/
union hello{//共用体类型名为 struct hello
  int hello;//共用体成员名可以与共用体类型名中的第二个标识符相同
  char c[100];
  struct hello * p;//共用体可以包含该结构体指针,但是不可以包含该共用体 ,一般不包括指针,嗯嗯,我还没见过,就是酱紫
};

共用体变量的定义

/*结构体的定义分配内存空间*/
union hello hello;

共用体使用示例

/*检查大小端序*/
#include <stdio.h>
union hiahia{
    int i;
    char c;
} b;
int main(int argc, const char *argv[])
{
    b.i = 1;
    if(b.c){
        printf("this machine follows the little endian \n");
    }else{
        printf("this machine follows the big endian \n");
    }
    return 0;
}
/*另外,封装两个检查大小端的函数,随变找一个用*/
/*
*返回值:大端序返回1,小端序返回0
*/
static int IsBigEndian(void){
    union hiahia{
        int i;
        char c;
    } b;
    b.i = 1;
    return !b.c;
}
/*
*返回值:大端序返回1,小端序返回0
*/
static int IsBigEndian(void){
    int i = 1;
    return !*(char*)&i;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值