Wiki:知识&笔记 Wiki:知识&笔记
首页
  • 学习笔记

    • 《JavaScript教程》笔记
  • 嵌入式

    • STM32
  • 技术文档
归档
GitHub (opens new window)
首页
  • 学习笔记

    • 《JavaScript教程》笔记
  • 嵌入式

    • STM32
  • 技术文档
归档
GitHub (opens new window)
  • Python

  • C 语言继续教育

    • typedef
    • 预处理器
    • 枚举
    • 结构体
    • 位域
    • 共用体
      • 1.0 什么是共用体
      • 2.0 共用体的大小
    • C大型程序
    • C 语言标准库
    • 其它零碎补充
  • 学习笔记

  • 语言学习
  • C 语言继续教育
2020-08-16
1.0 什么是共用体
2.0 共用体的大小

共用体

# 1.0 什么是共用体

共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。

如果你清楚结构体是什么,那么共用体简直易如反掌,我们来使用一个例子讲清楚共用体:

// 预处理指令
int main()
{
    union BOOKS 
    {
        char name[50];
        char author[40];
        int page;
        int book_id;
    } book1;
    
    book1.page = 1000;
    book1.book_id = 12569;
    strcpy(book1.name, "Fake news");
    strcpy(book1.author, "Donald Trump");
    
    printf("book1.name: %s\n", book1.name);
    printf("book1.author: %s\n", book1.author);
    printf("book1.page: %d\n", book1.page);
    printf("book1.book_id: %d\n", book1.book_id);
    
    return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

输出的结果是:

book1.name: Donald Trump
book1.author: Donald Trump
book1.page: 1634627396
book1.book_id: 1634627396
1
2
3
4

这样你大概就知道了共用体与结构体的不同了:共用体之内只能储存一个数据,给结构体的任何一个元素赋值都会覆盖之前的数据

# 2.0 共用体的大小

共用体占用的内存应足够存储共用体中最大的成员

编辑 (opens new window)
上次更新: 2020/08/16, 12:08:00
位域
C大型程序

← 位域 C大型程序→

Theme by Vdoing | Copyright © 2020-2025 Jack :) | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式