1. 概念
结构体是C语言中的一种复合数据类型,用于将不同类型的数据组合在一起,形成一个自定义的数据类型。结构体可以包含多个不同类型的成员变量,这些成员变量可以是基本数据类型、数组、指针等。通过结构体,我们可以将相关的数据组织在一起,提高程序的可读性和灵活性。
2. 定义结构体
在C语言中,可以使用关键字"struct"来定义结构体。结构体的一般形式为:
```
struct 结构体名 {
数据类型 成员变量1;
数据类型 成员变量2;
...
};
我们可以定义一个表示学生信息的结构体:
struct Student {
int id;
char name[20];
int age;
float score;
上述代码定义了一个名为"Student"的结构体,包含了学生的学号(id)、姓名(name)、年龄(age)和成绩(score)四个成员变量。
3. 结构体的使用
结构体定义完成后,可以通过以下方式使用结构体:
- 声明结构体变量并初始化:
struct Student stu1 = {1001, "Tom", 18, 89.5};
- 访问结构体成员变量:
printf("学生姓名:%s\n", stu1.name);
printf("学生年龄:%d\n", stu1.age);
- 修改结构体成员变量的值:
stu1.score = 95.0;
- 结构体作为函数参数和返回值:
void printStudent(struct Student stu) {
printf("学生姓名:%s\n", stu.name);
printf("学生年龄:%d\n", stu.age);
}
struct Student createStudent(int id, char name[], int age, float score) {
struct Student stu;
stu.id = id;
strcpy(stu.name, name);
stu.age = age;
stu.score = score;
return stu;
4. 结构体的嵌套
结构体可以嵌套定义在另一个结构体中,形成复杂的数据结构。我们可以定义一个包含学生信息和课程信息的结构体:
struct Course {
int courseId;
char courseName[20];
struct Course course;
通过结构体的嵌套,我们可以更加灵活地表示和操作复杂的数据关系。
5. 结构体的指针
结构体的指针可以用于动态分配内存和提高程序的效率。通过结构体指针,我们可以方便地修改结构体的成员变量值。例如:
struct Student *pStu = &stu1;
pStu->score = 95.0;
上述代码中,我们通过结构体指针pStu修改了stu1的成绩(score)。