1. 结构体是什么?🧩

你可以把结构体理解成一个**“自定义的变量类型”,或者更形象一点,一个“小包裹”**。

  • 在C语言里,我们已经有了 int (整数)、 float (小数)、 char (字符)这些基本类型。
  • 但现实世界的东西往往很复杂,比如一个“学生”,他有学号、姓名、年龄、成绩等多个属性。用一堆零散的变量来管理会非常混乱。
  • 结构体就是用来解决这个问题的:它允许你把这些相关的变量打包在一起,形成一个新的、更复杂的“变量类型”。
  1. 怎么定义一个结构体?📝

定义结构体,就是在告诉编译器:“我要创造一个新的‘包裹’,它的名字叫什么,里面要装些什么东西。”

语法是这样的:

c

struct 结构体名 {
数据类型 成员1;
数据类型 成员2;
// … 可以有更多成员
};

举个例子:
我们来定义一个“学生”结构体:

c

struct Student {
int id; // 学号,是一个整数
char name[20];// 姓名,是一个字符串(字符数组)
int age; // 年龄,是一个整数
float score; // 成绩,是一个小数
};

这样,我们就创造了一个叫 struct Student 的新类型,它可以用来描述一个学生的所有信息。

  1. 怎么使用这个结构体?🛠️

定义好结构体类型后,我们就可以像使用 int 一样,用它来定义变量了。

① 定义结构体变量

c

// 定义了一个叫 zhangsan 的学生变量
struct Student zhangsan;

现在, zhangsan 就是一个“学生”包裹,里面有 id 、 name 、 age 、 score 四个格子,但现在都是空的。

② 给结构体变量赋值

我们用 . 操作符来打开这个“包裹”,给里面的成员赋值。

c

zhangsan.id = 2023001; // 给学号赋值
strcpy(zhangsan.name, “张三”); // 给姓名赋值(字符串要用strcpy函数)
zhangsan.age = 18; // 给年龄赋值
zhangsan.score = 95.5; // 给成绩赋值

也可以在定义的时候就一次性赋值(初始化):

c

struct Student lisi = {2023002, “李四”, 19, 88.0};

③ 访问结构体里的成员

同样用 . 操作符来读取里面的值:

c

printf(“姓名:%s\n”, zhangsan.name);
printf(“成绩:%.1f\n”, zhangsan.score);

这段代码会输出:

plaintext

姓名:张三
成绩:95.5

  1. 为什么要用结构体?🤔

想象一下,如果不用结构体,管理一个学生的信息会是这样:

c

int zhangsan_id;
char zhangsan_name[20];
int zhangsan_age;
float zhangsan_score;

int lisi_id;
char lisi_name[20];
int lisi_age;
float lisi_score;

如果有100个学生,代码会变得像乱麻一样。

而用了结构体之后:

c

struct Student class[30]; // 直接定义一个有30个学生的班级数组,非常清晰

这就是结构体的威力:让复杂的数据变得有条理、好管理。

  1. 核心总结 💡
  • 结构体(struct):是C语言提供的一种自定义数据类型,用于将多个相关变量打包成一个整体。
  • 定义:用 struct 关键字,指定结构体名和它包含的成员。
  • 使用:
  1. 用 struct 结构体名 定义变量。
  2. 用 . 操作符来访问和修改变量里的成员。
  • 作用:让代码更清晰、更有逻辑,方便管理复杂的现实世界对象。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐