【C】Re10 共用体、枚举、类型定义
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 共用体、枚举、类型定义的更多相关文章
- C++ 共用体 枚举类型 所有
一.共用体类型 1.共用体的概念. 有时候需要将几种不同类型的变量存放到同一段内存单元中.例如有三个变量,他们的字节数不同,但是都从同一个地址开始存放.也就是用了覆盖技术,几个变量互相覆盖.这种使几个 ...
- 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型
函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...
- 瘋子C语言笔记(结构体/共用体/枚举篇)
(一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...
- 5、数组&字符串&结构体&共用体&枚举
程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...
- C语言基础 (11) 结构体 ,共用体 枚举 typedef
1 课堂回顾 作用域与生命周期 2 static 局部变量 2 打字游戏 3 内存分区代码分析 4 结构体基本操作 (复合类型[自定义类型 #include <stdio.h> #incl ...
- C# 结构体 枚举类型
注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...
- C#基础 结构体 枚举类型
结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...
- C语言的结构体,枚举类型在程序中的作用
http://www.xue63.com/xueask-1221-12212854.html 结构和枚举类型从程序实现的角度来说,是用更接近自然语言的方式来表达数据.比如说实现2维空间的点,你可以使用 ...
- Java枚举类型定义方式
public enum Method { // get请求 GET("get"), // post请求 POST("post"); private String ...
- 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符
[源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...
随机推荐
- c#WinFrom自定义图表仪表控件-频谱
这是为客户定制的一个频谱图表控件,先看下成品效果,gif较大,略等片刻 开发步骤分析: 1.界面有多个间距不等的线分割的区域,每个区域的值范围不同,我们就需要把每个区域定义出来,方便我们操作的时候来计 ...
- Semantic Kernel入门系列:通过依赖注入管理对象和插件
前言 本章讲一下在Semantic Kernel中使用DependencyInject(依赖注入),在之前的章节我们都是通过手动创建Kernel对象来完成框架的初始化工作,今天我们用依赖注入的方式来实 ...
- koishi常用插件推荐
今天给大家做一个常用插件的推荐 以下将插件归为几个大类,按类型推荐 1. 日常相关 点歌 插件名:koishi-plugin-music-downloadvoice-api 功能介绍: 语音点歌 - ...
- php监控
1.开启php的监控数据监控功能 # 使用部署了php-fpm的机器即可 # yum install php-fpm -y # 1.修改参数 [root@web-7 /etc/php-fpm.d]#g ...
- Go变量作用域精讲及代码实战
关注作者,复旦AI博士,分享AI领域与云服务领域全维度开发技术.拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕博,复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇 ...
- GlaDS应用
题目:Antarctic basal environment shaped by high-pressure flow through a subglacial river system 文章使用数值 ...
- flutter 创建第一个项目(二)
新建flutter project 项目 这样就创建出了第一个项目
- ThreadLocal 源码浅析
前言 多线程在访问同一个共享变量时很可能会出现并发问题,特别是在多线程对共享变量进入写入时,那么除了加锁还有其他方法避免并发问题吗?本文将详细讲解 ThreadLocal 的使用及其源码. 一.什么是 ...
- Controller-runtime模块
Controller-runtime框架 Controller-runtime是社区提供的用于开发Controller的框架,包含了各种已封装的代码库.Kubebuilder与Operator SDK ...
- 虚拟机安装Linux CENTOS 07 部署NET8 踩坑大全
首先下载centos07镜像,建议使用阿里云推荐的地址: https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spm=a2c6h.25603 ...