📜  C C++中的结构数组与结构中的数组(1)

📅  最后修改于: 2023-12-03 15:29:41.878000             🧑  作者: Mango

C/C++中的结构数组与结构中的数组

在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]);
总结

结构数组和结构中的数组是结构体的两种扩展形式,它们都能够方便地存储和处理一组相似或相关的数据。对于结构数组,我们可以使用下标来访问其中的每个元素;对于结构中的数组,我们可以使用点号操作符来访问其中的每个元素。在实际编程中,要根据具体情况选择使用哪一种形式。