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

📅  最后修改于: 2023-12-03 14:59:36.402000             🧑  作者: Mango

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

在C/C++中,结构体(struct)是一种用户自定义数据类型,可以存储不同数据类型的数据,而结构数组和结构中的数组则是使用结构体的两种方式。

结构数组

结构数组是由多个同类型的结构体构成的数组,其定义形式如下:

struct 结构体名 数组名[数组长度];

例如,定义一个 Student 结构体,表示学生的姓名和年龄,然后用结构数组存储多个学生的信息:

struct Student{
    char name[20];
    int age;
};

int main(){
    struct Student stu[3] = {{"Tom", 18}, {"Jack", 19}, {"Lucy", 20}};
    //打印第1个学生的名字和年龄
    printf("Name: %s, Age: %d\n", stu[0].name, stu[0].age);
    return 0;
}

以上代码定义了一个包含3个元素的结构数组stu,每个元素都是一个Student类型的结构体,初始值为{"Tom", 18},{"Jack", 19},{"Lucy", 20},即3个学生的姓名和年龄。打印结果为:

Name: Tom, Age: 18

结构数组可以像普通数组一样使用下标操作访问每个元素的数据。

结构中的数组

结构中的数组是指在结构体中定义一个数组类型的成员,其定义形式如下:

struct 结构体名{
    数据类型 数组名[数组长度];
};

例如,定义一个 Student 结构体,表示学生姓名和5门课程的成绩:

struct Student{
    char name[20];
    int score[5];
};

以上定义了一个包含一个字符串类型成员和一个整数数组成员的结构体。定义结构体变量并为其成员赋值:

struct Student stu;
strcpy(stu.name, "Tom");
for (int i = 0; i < 5; i++)
    stu.score[i] = i + 1;
//打印学生名字和每门课程的成绩
printf("Name: %s\n", stu.name);
for (int i = 0; i < 5; i++)
    printf("Course%d score: %d\n", i + 1, stu.score[i]);

打印结果为:

Name: Tom
Course1 score: 1
Course2 score: 2
Course3 score: 3
Course4 score: 4
Course5 score: 5

结构中的数组可以像普通数组一样使用下标操作访问每个元素的数据。

总结

结构数组和结构中的数组是 C/C++ 中非常常用的结构体使用方式,能够方便地存储和操作多个同类型的数据,如多个学生的信息、多个任务的执行状态等。熟练掌握这两种使用方式,能够轻松应对实际开发中的数据处理需求。