怎么做
  1. 题面里的虚线方框就是要填的空
  2. 点候选项,它会填进当前高亮的那个空
  3. 点已填好的空,可以把选项取回来重选
  4. 全部填满后「提交」才会亮起
卡住了就点右下角的 👩‍🏫 问 AI 老师,她会给提示但不直接给答案。

共用体:几个成员合住一间房

👁️ 26 人浏览 💬 0 人评论 ❤️ 添加收藏

struct:每个成员一间房;union:所有成员合住一间

struct

union

x
y
z

写 x = 1

再写 y = 2,x 的 1 没了

共用体(union)的写法和结构体一模一样,只是把 struct 换成 union:

#include <stdio.h>

struct S { int a; int b; int c; };
union U { int a; int b; int c; };
enum level { LOW, MID = 5, HIGH };

int main(void)
{
    union U u;
    printf("%d %d\n", (int)sizeof(struct S), (int)sizeof(union U));
    u.a = 5;
    u.b = 7;
    printf("%d\n", u.a);
    printf("%d %d\n", LOW, HIGH);
    return 0;
}
  • 结构体的成员各占各的内存,大小是各成员加起来;共用体的成员共用同一块内存,大小按最大的那个成员算。
  • 所以共用体里同一时刻只有最后写进去的那个成员有效,后写的会把先写的盖掉。
  • 枚举(enum)给一组整数起名字:enum level { LOW, MID = 5, HIGH }; 里,没写值的从 0 开始, 后一个比前一个大 1。枚举值就是整数,可以比较、可以当数组下标。

设 int 占 4 个字节。程序第一行输出【0】和【1】;第二行输出【2】;第三行输出 0 和【3】。

请登录后作答。
去登录
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论