手撕自定义类型:结构体,枚举,联合——【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语言自定义类型的基本介绍。结构体、枚举和联合都是常见的自定义类型,它们可以根据具体需求进行设计和使用。

