欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【C语言】共用体(联合体)union快速学习

程序员文章站 2022-07-15 08:54:23
...

共用体


其它文章: 【C语言】结构体快速学习

0. 前言

  1. 结构体中,编译器为每个数据成员都分配内存地址空间,但是共用体(联合)的所有数据成员共用一块内存。
  2. 在某个确定的时刻,共用体只能表示一种成员类型。

1. 共用体定义

union computerInfo{
    char id[20];
    float price;
};
  • 适用场景:
    某个部门要登记所有的电脑,如果是品牌机,就登记电脑型号,如果是组装机,就登记价格,型号和价格只取其一,使用共用体最合适。

2. 声明共用体变量

union computerInfo{
    char id[20];
    float price;
}computer1, computer2;

3. 初始化共用体变量

computerInfo computer1 = {"ThinkPad E431"};
computerInfo computer1 = {4500};
union computerInfo{
    char id[20];
    float price;
}computer1 = {"ThinkPad E431"};

4. 访问共用体变量的成员

不论共用体在定义时成员列表有多少项,在某个确定的时刻,共用体变量只能存储一个成员。

#include<stdio.h>

union computerInfo {
    char brand[20];
    float price;
};

int main() {
    union computerInfo comp1 = { 4500 };
    int type = 0;

    printf("Price(Input 0) or Brand(Input 1):\n");
    scanf("%d", &type);

    if (type == 0) {
        printf("\nPlease input the Price of the computer:\n");
        scanf("Brand:\t%f", &comp1.price);
        printf("Price:\t%.1f\n", comp1.price);
    }
    else if (type == 1) {
        printf("\nPlease input the Brand of the computer:\n");
        scanf("Brand:\t%s", &comp1.brand);
        printf("Brand:\t%s\n", comp1.brand);
    }
    else
        printf("Error\n");
    return 0;
}

5. 共用体赋值

union computer B;
B = A;
相关标签: C语言 c语言