结构体数组
结构体数组属于结构体中的内容,将定义好的结构体存放在一个数组当中方便我们对多个结构相同的结构体进行操作。
定义结构体数组
结构体数组的定义方法与普通数组定义方法类似(前提是已经定义好结构体类型结构体类型参见上篇文章)都为数据类型(定义好的结构体类型)加数组名加[]加分号,代码如下所示
//结构体数组定义
#include<stdio.h>
#include<string.h>
struct arry//定义结构体类型
{
int id;
char name[128];
};
int main()
{
struct arry student[5];//定义了一个含有5个struct arry类型的结构体数组
}
按照以上代码数组定义完成
结构体数组初始化
接下来进行数组的初始化,这里采用函数调用的方法进行结构体数组的初始化代码如下
//结构体数组初始化
#include<stdio.h>
#include<string.h>
struct arry//定义类型为struct arry类型的结构体
{
int id;
char name[128];
};
void set_student(struct arry *p,int n)//定义初始化函数用结构体类型指针接受数组首元素地址,用整形接受数组长度
{
for(int i=0;i<n;i++)
{
(*(p+i)).id=i+1;//通过数组中结构体变量对结构体成员进行赋值==若使用地址应用指向操作==
char buf[128];//定义字符数组用来存名字变量
sprintf(buf,"%d%d%d",i,i,i);//组包函数将三个i组起来当作name
strcpy((*(p+i)).name,buf);//拷贝字符到结构体的name成员中
}
}
int main()
{
struct arry student[5];//定义名为student的结构体数组
set_student(student,sizeof(student)/sizeof(student[0]));//调用set_student函数对结构体数组进行初始化并传入数组首元素地址数组长度两个参数
for(int i=0;i<sizeof(student)/sizeof(student[0]);i++)
{
printf("%d %s\n",student[i].id,student[i].name);//利用for循环将结构体每个成员都打印出来
}
}
通过以上操作就成功定义了结构体数组并对其进行了初始化和赋值操作,掌握结构体数组将大大提高我们对结构体数据的处理效率。