C语 结构体 共用体 检举类型
- 结构体
- 结构体的定义:
- 在声明类型的同时定义变量
- 省略结构体名, 直接定义结构体变量
- 结构体变量也可以定义数组
结构体的普通变量 通过 . 来访问成员 结构体的指针变量 通过 -> 来访问成员
给变量类型别名
// #define 别名 要替换的数 (作用类似于)typedef 数据类型 别名; // 区别 typedef 要声明数据类型 而 #define 不用别名 变量名 = 赋值;
结构体数组typedef 数据类型 名称; { 数据类型1 变量名1; 数据类型2 变量名2; 数据类型3 变量名3;}别名;// 然后再调用别名 要声明的变量 [数组];
结合一起typedef struct 结构体名{ 数据类型 成员变量名1; 数据类型 成员变量名2; 数据类型 成员变量名3; }别名; // 定义别名后, 原先的结构体名称也可以用
结构体指针数据名 *指针 = &地址;printf("%s\n", b->成员)// 或者printf("%s\n", (*b).成员)
注意: 访问成员用 . 点号
共用体结构体和共用体的区别: 共用体可以共用内存, 结构体不行共用体:
graph LR
A[(" 共用体 ")]-->B[" 变量名1变量名2变量名3 "]
结构体:
graph LR
A[(" 结构体 ")]-->B[" 变量名1"]
A[(" 结构体 ")]-->C[" 变量名2"]
A[(" 结构体 ")]-->D[" 变量名3"]
共用体的定义:
union 共用体名{ 成员列表};
枚举类型
枚举类型作用就是美化代码, 让代码由复杂到简单
枚举类型的定义:
enum 标识名{ 枚举项0, 枚举项1, 枚举项2; };
注意: 枚举项没赋值的情况下是从 0 开始, 赋值之后是从 赋值的那个值往后 依次加 1
给变量类型别名
// #define 别名 要替换的数 (作用类似于)typedef 数据类型 别名; // 区别 typedef 要声明数据类型 而 #define 不用别名 变量名 = 赋值;
结构体数组typedef 数据类型 名称; { 数据类型1 变量名1; 数据类型2 变量名2; 数据类型3 变量名3;}别名;// 然后再调用别名 要声明的变量 [数组];
结合一起typedef struct 结构体名{ 数据类型 成员变量名1; 数据类型 成员变量名2; 数据类型 成员变量名3; }别名; // 定义别名后, 原先的结构体名称也可以用
结构体指针数据名 *指针 = &地址;printf("%s\n", b->成员)// 或者printf("%s\n", (*b).成员)
注意: 访问成员用 . 点号
共用体结构体和共用体的区别: 共用体可以共用内存, 结构体不行共用体:
graph LR
A[(" 共用体 ")]-->B[" 变量名1变量名2变量名3 "]
结构体:
graph LR
A[(" 结构体 ")]-->B[" 变量名1"]
A[(" 结构体 ")]-->C[" 变量名2"]
A[(" 结构体 ")]-->D[" 变量名3"]
共用体的定义:
union 共用体名{ 成员列表};
枚举类型
枚举类型作用就是美化代码, 让代码由复杂到简单
枚举类型的定义:
enum 标识名{ 枚举项0, 枚举项1, 枚举项2; };
注意: 枚举项没赋值的情况下是从 0 开始, 赋值之后是从 赋值的那个值往后 依次加 1
- 结构体数组
- 结合一起
结构体指针共用体- 结构体和共用体的区别: 共用体可以共用内存, 结构体不行
共用体:结构体:- 共用体的定义:
枚举类型- 枚举类型的定义:
C语学习笔记
结构体
- 结构体可以定义成全局变量也可以定义在函数里面成局部变量
结构体的定义:
struct 结构体名{ 数据类型 成员变量名1; 数据类型 成员变量名2; 数据类型 成员变量名3; }
|
在声明类型的同时定义变量
struct 结构体名{ 数据类型 成员变量名1; 数据类型 成员变量名2; 数据类型 成员变量名3; }变量名列表;
|
省略结构体名, 直接定义结构体变量
- 注意: 只能定义一次, 接下来不能再定义结构体变量
struct { 数据类型 成员变量名1; 数据类型 成员变量名2; 数据类型 成员变量名3; }变量名列表;
|
结构体变量也可以定义数组
struct 结构体名{ 数据类型 成员变量名1; 数据类型 数组变量名2 [ 数组 ]; 数据类型 成员变量名3; };
struct 结构体名 变量名 = { 成员1, { 数组1, 数组2, 数组3 }, 成员3 }
|
结构体的普通变量 通过 . 来访问成员
结构体的指针变量 通过 -> 来访问成员
typedef 数据类型 别名;
别名 变量名 = 赋值;
|
结构体数组
typedef 数据类型 名称; { 数据类型1 变量名1; 数据类型2 变量名2; 数据类型3 变量名3; }别名;
别名 要声明的变量 [数组];
|
结合一起
typedef struct 结构体名{ 数据类型 成员变量名1; 数据类型 成员变量名2; 数据类型 成员变量名3; }别名;
|
结构体指针
数据名 *指针 = &地址;
printf("%s\n", b->成员)
printf("%s\n", (*b).成员)
|
注意: 访问成员用 . 点号
共用体
结构体和共用体的区别: 共用体可以共用内存, 结构体不行
共用体:
graph LR
A[(" 共用体 ")]-->B[" 变量名1
变量名2
变量名3 "]
结构体:
graph LR
A[(" 结构体 ")]-->B[" 变量名1"]
A[(" 结构体 ")]-->C[" 变量名2"]
A[(" 结构体 ")]-->D[" 变量名3"]
共用体的定义:
枚举类型
枚举类型的定义:
enum 标识名 { 枚举项0, 枚举项1, 枚举项2; };
|
注意: 枚举项没赋值的情况下是从 0 开始, 赋值之后是从 赋值的那个值往后 依次加 1
作者: 我叫史迪奇
本文来自于:
https://sdq3.link/C-struct-union-enum.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议