结构体是一种自定义数据类型,它可以将不同类型的数据组合在一起,形成一个逻辑上的整体单元。
结构体的定义格式如下:
struct 结构体名 {
数据类型1 成员名1;
数据类型2 成员名2;
……
};
结构体的作用在于:
结构体中的每个成员都有自己的名称和数据类型,可以通过成员名来访问和操作结构体的各个成员。
例如,有一个名为person的结构体,其中包含name、age和gender三个成员,那么可以通过如下方式访问和修改它们的值:
struct person {
char name[20];
int age;
char gender;
};
person p;
strcpy(p.name, "Tom");
p.age = 20;
p.gender = 'M';
可以看到,我们可以通过"."来访问结构体中的某个成员变量,这是因为结构体是一种聚合类型,其成员变量被视为结构体对象的属性。
结构体中的成员变量也可以是结构体类型,这样就可以形成嵌套结构体。
例如,有一个名为student的结构体,其中包含name、age和gender三个成员,而它的一个成员courses又是另一个名为course的结构体,它包含course_name、score和credit三个成员。
如果要访问嵌套结构体中的成员变量,可以使用"."或者"->"运算符,"->"运算符用于通过指向结构体的指针访问其成员。
struct course {
char course_name[20];
int score;
float credit;
};
struct student {
char name[20];
int age;
char gender;
struct course courses;
};
student s;
strcpy(s.name, "Alice");
s.age = 20;
s.gender = 'F';
strcpy(s.courses.course_name, "English");
s.courses.score = 89;
s.courses.credit = 2.5;
// 使用指针方式访问
student *p = &s;
strcpy(p->name, "Bob");
p->age = 21;
p->gender = 'M';
strcpy(p->courses.course_name, "Math");
p->courses.score = 95;
p->courses.credit = 3.0;
结构体可以用于很多地方,这里举几个简单的例子来说明。
以上只是简单的应用举例,实际应用中,结构体的使用非常广泛,可以用于各种数据结构、文件操作、网络通信等方面。