结构体是什么?
结构体就是把多个变量包装在一起,结构体也可以作为类型使用,你可以定义结构体变量,结构体指针。
为什么需要结构体?
想象现在有一个函数 char* findStudentName(char* no),它通过学号查找学生姓名。当我们仅仅需要查找学生姓名时,是没问题的。假设现在我们还需要获取到年龄,性别,联系电话,班级这些信息呢?你可能会想到我们是不是应该再写几个诸如 findStudentAge, findStudentSex, findStudentPhone, findStudentClass 这样的函数。仅从功能上来说这样确实可以解决问题,但是这个方案不好,因为往往需要多次调用才能获取到需要的全部信息,等到你了解到数据库之类的技术后,你就会认识到这个方案在运行速度上也是不能接受的。
上面提到的这些函数大部分都是返回 char* 类型,现在想象一下,假设有个类型就叫 Student,这个 Student 类型包含了你所需要的所有的学生信息。那么上面的问题是不是就可以用一个 Student findStudent(char* no) 函数解决了?这里提到的 Student 类型在 C 语言中就是通过结构体来实现。
怎么做?
首先要定义上面提到的结构体 Student
struct Student {
char* name;
char* sex;
int age;
char* class;
char* no;
char* phone;
};
struct 是定义和使用结构体的关键字,后面的 Student 是结构体的名字,用花括号包起来的是结构体的成员定义,多个成员之间用分号分割,每个成员需要指明类型和名字。
接下来看下结构体的使用代码
struct Student findStudent(char* no) { //注意函数的返回值是 struct Student
struct Student student; //声明结构体变量
student.age = 20; //给结构体成员赋值
student.name = "小明";
student.sex = "男";
student.class = "一年级七班";
student.no = no;
student.phone = "18282828282";
return student;
}
这个 findStudent 函数返回了一个 Student 结构体,在代码中你可以看到如何声明一个结构体变量,如何给每个成员赋值。
最后添加一个 main 函数,尝试调用以上代码
int main() {
struct Student student = findStudent("1140707");
printf("%s, %s, %d, %s, %s, %s", student.name, student.sex
, student.age, student.class, student.no, student.phone);
return 0;
}
现在把以上代码复制到你的编辑器中编译运行试试看。注意结构体和函数的声明要在使用前。