结构体数组的定义与初始化
假设一个班有20个学生,描述这20个学生的信息,可以定义一个容量为20的struct Student类型的数组。与结构体变量定义方式一样,结构体数组的定义方式也有两种,下面分别进行介绍。
1、 先定义结构体类型,后定义结构体数组
具体示例如下:
struct Student //定义struct Student结构体类型
{
int num;
char name[10];
char sex;
};
struct Student stus[20]; //定义struct Student结构体数组stus
2、 在定义结构体类型的同时定义结构体数组
具体示例如下:
struct Student
{
int num;
char name[10];
char sex;
}stus[20];
结构体数组的初始化方式与普通类型的数组类似,都是通过为元素赋值的方式完成的。由于结构体数组中的每个元素都是一个结构体变量,因此,在为每个元素赋值的时候,需要将其成员的值依次放到一对大括号中。
例如,定义一个大小为3的struct Student结构体数组students,可以采用下列两种方式初始化students数组。
1、先定义结构体类型,然后定义结构体数组并初始化结构体数组
具体示例如下:
struct Student
{
int num;
char name[10];
char sex;
};
struct Student students[3]={{0001, "Zhang San",'M'},
{0002, "Li Si",'W'},
{0003, "Zhao Liu",'M'}
};
2、在定义结构体类型的同时,定义结构体数组并初始化结构体数组
具体示例如下:
struct Student
{
int num;
char name[10];
char sex;
}students[3]={ {0001, "Zhang San",'M'},
{0002, "Li Si",'W'},
{0003, "Zhao Liu",'M'}
};
当然,初始化结构体数组时,也可以不指定结构体数组的长度,系统在编译时,会自动根据初始化元素个数决定结构体数组的长度。例如,下列初始化结构体数组的方式也是合法的。
struct Student
{
int num;
char name[10];
char sex;
}students[]={ {0001, "Zhang San",'M'},
{0002, "Li Si",'W'},
{0003, "Zhao Liu",'M'}
};