📅  最后修改于: 2023-12-03 15:29:41.878000             🧑  作者: Mango
在C/C++中,结构体是一种自定义的数据类型,它可以包含多个不同类型和相同类型的数据成员,这些成员被称为结构体的域。而结构数组和结构中的数组则是结构体的扩展形式,它们都可以方便地存储和处理一组相似或相关的数据。
结构数组指的是由同一类型的结构体元素组成的数组。它的定义方式与普通数组类似,只不过每个数组元素都是一个结构体:
struct Person {
char name[100];
int age;
};
int main() {
struct Person people[3] = {
{ "Tom", 18 },
{ "Jerry", 19 },
{ "Alice", 20 }
};
return 0;
}
上面的代码定义了一个包含三个Person结构体的结构数组people,并对每个结构体赋初值。我们可以使用下标来访问结构数组中的每个元素,例如:
printf("The name of the first person is %s\n", people[0].name);
printf("The age of the second person is %d\n", people[1].age);
结构中的数组指的是在结构体内部定义的数组。这种数组可以作为结构体的域,是一种方便存储和访问一组数据的方式。
struct Student {
char name[100];
int scores[3];
float average;
};
int main() {
struct Student stu = {
"Lucy",
{ 85, 90, 92 },
(stu.scores[0] + stu.scores[1] + stu.scores[2]) / 3.0
};
printf("The name of the student is %s\n", stu.name);
printf("The average score of the student is %.2f\n", stu.average);
return 0;
}
上面的代码定义了一个包含一个姓名、一个3个元素的分数数组和一个平均分域的Student结构体。注意初始化平均分域需要使用结构中的数组进行计算。我们同样可以使用点号操作符访问结构中的数组,例如:
printf("The first score of the student is %d\n", stu.scores[0]);
printf("The second score of the student is %d\n", stu.scores[1]);
结构数组和结构中的数组是结构体的两种扩展形式,它们都能够方便地存储和处理一组相似或相关的数据。对于结构数组,我们可以使用下标来访问其中的每个元素;对于结构中的数组,我们可以使用点号操作符来访问其中的每个元素。在实际编程中,要根据具体情况选择使用哪一种形式。