Union 联合体\共用体

结合体:

每个成员的内存空间都是独立存在的,互不干涉

int 成员、double 成员、char 成员 = 4 + 8 + 1 【13字节大小】 取成员字节占用之和作为这个结构体的大小

联合体:

每个成员的内存空间在一起共用

int 成员、double 成员、char 成员 = 8 > 4 > 1 【8字节大小】 取成员最大字节占用类型作为这个共用体的大小

#include <stdio.h>
#include <stdlib.h>
#include <string.h> union U {
int a;
short b;
char c;
};
void test() {
printf("union U size -> %llu\n", sizeof(union U)); union U u = { // 共用体只有占用字节大的那个数据类型获取,小类型会被覆盖
100,
20,
30
}; printf("sum -> %d\n", u.a + u.b + u.c); // 100 + 100 + 100
} void test2() {
union U u = { // 所有的成员变量最后都会指向最大字节占用的成员属性
100,
20,
30
};
u.a = 20;
printf("sum -> %d\n", u.a + u.b + u.c);
u.b = 30;
printf("sum -> %d\n", u.a + u.b + u.c);
u.c = 40;
printf("sum -> %d\n", u.a + u.b + u.c);
} int main() {
test2();
return 0;
}

Enumeration 枚举

#include <stdio.h>
#include <stdlib.h>
#include <string.h> enum Season {
Spring,
Summer,
Autumn,
Winter
}; enum boolean {
false = 0, true = 1
}; int main() { enum boolean isTrue = true;
if (isTrue) {
printf("yes is true");
} return 0;
}

TypeDef的使用

给数据类型起一个别名

#include <stdio.h>
#include <stdlib.h>
#include <string.h> typedef int integer ; // 基本数据类型别名 struct S {
int aaa;
char bbb;
};
typedef struct S sss ; // 结构体数据类型别名 void typedefUsage() {
int aaa = 100;
integer aa = 100;
} typedef int * integerPointer ; // 适合给指针类型起别名
typedef char * characterPointer ; int main() {
return 0;
}

【C】Re10 共用体、枚举、类型定义的更多相关文章

  1. C++ 共用体 枚举类型 所有

    一.共用体类型 1.共用体的概念. 有时候需要将几种不同类型的变量存放到同一段内存单元中.例如有三个变量,他们的字节数不同,但是都从同一个地址开始存放.也就是用了覆盖技术,几个变量互相覆盖.这种使几个 ...

  2. 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型

    函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...

  3. 瘋子C语言笔记(结构体/共用体/枚举篇)

    (一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...

  4. 5、数组&字符串&结构体&共用体&枚举

    程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...

  5. C语言基础 (11) 结构体 ,共用体 枚举 typedef

    1 课堂回顾 作用域与生命周期 2 static 局部变量 2 打字游戏 3 内存分区代码分析 4 结构体基本操作 (复合类型[自定义类型 #include <stdio.h> #incl ...

  6. C# 结构体 枚举类型

    注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...

  7. C#基础 结构体 枚举类型

    结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...

  8. C语言的结构体,枚举类型在程序中的作用

    http://www.xue63.com/xueask-1221-12212854.html 结构和枚举类型从程序实现的角度来说,是用更接近自然语言的方式来表达数据.比如说实现2维空间的点,你可以使用 ...

  9. Java枚举类型定义方式

    public enum Method { // get请求 GET("get"), // post请求 POST("post"); private String ...

  10. 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符

    [源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...

随机推荐

  1. 内置对象Date

    // 内置对象 Date 时间对象         // 可以通过 内置对象 data来获取和存储时间         // 使用方式步骤         // 1,创建时间对象         // ...

  2. DBEAVER 23.0.2 调整SQL编辑器字体大小 ver:20240112

    DBEAVER 23.0.2 调整SQL编辑器字体大小 ver:20240112 版本是:23.0.2. 菜单-窗口-首选项.用户界面-外观-颜色和字体.展开 DBeaver Font."M ...

  3. C#.NET X509Certificate2 该项不适于在指定状态下使用

    X509Certificate2 x509 = new X509Certificate2(lblPfxPath.Text,txtPfxPwd.Text.Trim() ); string xmlpri= ...

  4. List集合中的元素进行排序

    Collections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到Java中提供的对集合进行操作的工具类Collections,其中的sort方法 1 ...

  5. github fork后对上游仓库的做rebase

    想对上游仓库做更新同步 先添加上游仓库 git remote add upstream https://github.com/原始作者/原始仓库.git 其中这里的upstream 是一个命名,和 o ...

  6. fastjson对接口参数的某个字段不打印输出,如文件的base64字符串

    fastjson对接口参数的某个字段不打印输出,如文件的base64字符串 package com.example.core.mydemo.json5; import com.alibaba.fast ...

  7. idea编译报错 sun.misc.BASE64Decoder升级处理

    idea编译报错 sun.misc.BASE64Decoder升级处理 警告:17:01:15 /deploy/jenkins/workspace/auto-java-test/utils/Image ...

  8. linux nginx命令 查找目录和重启

    #查看nginx进程 [root@LinuxServer]$ps -aux | grep nginx root 3229 0.0 0.0 112812 972 pts/0 S+ 16:50 0:00 ...

  9. EthernetIP IO从站设备数据 转 Modbus RTU TCP项目案例

    1         案例说明 1.   设置网关采集EthernetIP IO设备数据 2.   把采集的数据转成Modbus协议转发给其他系统. 2        VFBOX网关工作原理 VFBOX ...

  10. Windows10在WSL中运行GUI应用

    0. 首先在WSL装X11相关环境 需要安装x11和桌面环境, 在这里装的是xfce4   sudo apt install x11-apps sudo apt install xfce4 有两种显示 ...