手撕自定义类型:结构体,枚举,联合——【C语言】
发布人:shili8
发布时间:2025-01-01 19:58
阅读次数:0
**手撕自定义类型:结构体、枚举、联合**
在 C语言中,自定义类型是指我们自己定义的数据类型,它们可以根据具体需求进行设计。其中,结构体(struct)、枚举(enum)和联合(union)都是常见的自定义类型。
### **1. 结构体**
结构体是一种复合数据类型,它可以包含多个不同类型的成员变量。我们可以使用 `struct` 关键字来定义一个结构体。
**示例代码**
c// 定义一个学生结构体typedef struct { int id; // 学号 char name[20]; // 名字 float score; // 成绩} Student; int main() { // 创建一个学生对象 Student student; // 初始化成员变量 student.id =1; strcpy(student.name, "张三"); student.score =90.5f; // 输出成员变量 printf("学号:%d ", student.id); printf("名字:%s ", student.name); printf("成绩:%.2f ", student.score); return0; }
**注释**
* `typedef` 关键字用于定义一个新类型,相当于 `struct Student { ... };`。
* `struct` 关键字用于定义一个结构体。
* 成员变量之间使用逗号(`,`)分隔。
* 使用 `strcpy` 函数来复制字符串。
### **2. 枚举**
枚举是一种特殊的自定义类型,它可以表示一组有限的值。我们可以使用 `enum` 关键字来定义一个枚举。
**示例代码**
c// 定义一个颜色枚举typedef enum { RED =1, // 红色 GREEN =2, // 绿色 BLUE =3 // 蓝色} Color; int main() { // 创建一个颜色变量 Color color; // 初始化颜色 color = GREEN; // 输出颜色值 switch (color) { case RED: printf("红色 "); break; case GREEN: printf("绿色 "); break; case BLUE: printf("蓝色 "); break; default: printf("未知颜色 "); break; } return0; }
**注释**
* `typedef` 关键字用于定义一个新类型,相当于 `enum Color { ... };`。
* `enum` 关键字用于定义一个枚举。
* 枚举值之间使用逗号(`,`)分隔。
* 使用 `switch`语句来匹配枚举值。
### **3. 联合**
联合是一种特殊的自定义类型,它可以表示多个不同类型的成员变量。我们可以使用 `union` 关键字来定义一个联合。
**示例代码**
c// 定义一个整数和浮点数联合typedef union { int i; // 整数 float f; // 浮点数} IntFloat; int main() { // 创建一个整数和浮点数对象 IntFloat intFloat; // 初始化整数值 intFloat.i =10; // 输出整数值 printf("整数:%d ", intFloat.i); // 初始化浮点数值 intFloat.f =3.14f; // 输出浮点数值 printf("浮点数:%.2f ", intFloat.f); return0; }
**注释**
* `typedef` 关键字用于定义一个新类型,相当于 `union IntFloat { ... };`。
* `union` 关键字用于定义一个联合。
* 成员变量之间使用逗号(`,`)分隔。
以上就是关于 C语言自定义类型的基本介绍。结构体、枚举和联合都是常见的自定义类型,它们可以根据具体需求进行设计和使用。