结构体(structure)是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个新的数据结构。结构体可以包含多个不同类型的成员变量,每个成员变量都有自己的名称和类型。
结构体的定义以关键字struct开头,后面跟着结构体的名称和一对大括号。在大括号中,可以定义多个成员变量,每个成员变量由其类型和名称组成,使用分号分隔。例如:
```
struct Person {
char name[20];
int age;
float height;
};
```
上面的代码定义了一个名为Person的结构体,包含三个成员变量:名字(name)、年龄(age)和身高(height)。
定义结构体后,可以声明结构体的变量,并对其成员变量进行访问。可以使用点运算符(.)来访问结构体的成员变量。例如:
```
struct Person person1;
strcpy(person1.name, "John");
person1.age = 25;
person1.height = 1.75;
```
上面的代码声明了一个名为person1的Person类型的结构体变量,并对其成员变量进行赋值。
除了声明单个结构体变量,还可以定义结构体数组和指针。结构体数组是具有相同数据类型的结构体变量的集合,可以通过下标访问数组中的元素。结构体指针是指向结构体的指针,可以使用箭头运算符(->)来访问指针指向的结构体的成员变量。例如:
```
struct Person people[3];
people[0].age = 30;
people[1].age = 40;
people[2].age = 50;
struct Person *ptr = &person1;
ptr->age = 26;
```
上面的代码定义了一个包含3个Person类型的结构体数组和一个指向person1的结构体指针,并对其成员变量进行赋值。
结构体可以作为函数的参数和返回值。通过将结构体作为参数传递给函数,可以在函数内部操作和修改结构体的成员变量。通过将结构体作为函数的返回值,可以将结构体的值传递给其他部分的代码。例如:
```
struct Person createPerson(char name[], int age, float height) {
struct Person person;
strcpy(person.name, name);
person.age = age;
person.height = height;
return person;
}
void printPerson(struct Person person) {
printf("Name: %s\n", person.name);
printf("Age: %d\n", person.age);
printf("Height: %.2f\n", person.height);
}
```
上面的代码定义了两个函数,createPerson函数用于创建一个Person类型的结构体,并返回该结构体的值;printPerson函数用于打印一个Person类型的结构体的成员变量。
结构体的使用可以更好地组织和管理复杂的数据,使代码更具可读性和可维护性。通过结构体,可以将相关的数据和操作打包在一起,形成一个独立的数据类型。