编辑这个页面须要登录或更高权限!

C 语言结构体和数组

为什么要使用结构数组?

例如有一种情况,我们需要存储5名学生的数据。我们可以使用下面给出的结构来存储它。

#include<stdio.h>  
struct student  
{  
    char name[20];  
    int id;  
    float marks;  
};  
void main()
{
	struct student s1,s2,s3;
	int dummy;
	printf("输入学生1的姓名,身份证和分数 ");
	scanf("%s %d %f",s1.name,&s1.id,&s1.marks);
	scanf("%c",&dummy);
	printf("输入学生2的姓名,身份证和分数 ");
	scanf("%s %d %f",s2.name,&s2.id,&s2.marks);
	scanf("%c",&dummy);
	printf("输入学生3的姓名,身份证和分数 ");
	scanf("%s %d %f",s3.name,&s3.id,&s3.marks);
	scanf("%c",&dummy);
	printf("输出详细信息....\n");
	printf("%s %d %f\n",s1.name,s1.id,s1.marks);
	printf("%s %d %f\n",s2.name,s2.id,s2.marks);
	printf("%s %d %f\n",s3.name,s3.id,s3.marks);
}

输出结果

输入学生1的姓名,身份证和分数 James 90 90  
输入学生2的姓名,身份证和分数 Adoms 90 90  
输入学生3的姓名,身份证和分数 Nick 90 90       
输出详细信息....        
James 90 90.000000                          
Adoms 90 90.000000                      
Nick 90 90.000000

在上面的程序中,我们在结构中存储了3个学生的数据。但是,如果有20名学生,则该程序的复杂性将增加。在这种情况下,我们将必须声明20个不同的结构变量,并将其一一存储。这将一直很困难,因为每次添加学生时都必须声明一个变量。记住所有变量的名称也是一项非常棘手的任务。但是,C语言中我们能够使用声明结构的数组,从而避免声明不同的结构变量;相反,我们可以创建一个包含所有存储不同实体信息的结构的集合。

C语言中的结构数组

C语言中的结构数组可以定义为多个结构变量的集合,其中每个变量都包含有关不同实体的信息。C语言中的结构数组用于存储有关不同数据类型的多个实体的信息。结构的阵列也称为结构的集合。

让我们看一下存储5个学生的信息并打印出来的结构数组的示例。

#include<stdio.h>  
#include <string.h>    
struct student{    
    int rollno;    
    char name[10];    
};   
int main(){  
    int i;  
    struct student st[5];  
    printf("输入5个学生数据");  
    for(i=0;i<5;i++){  
        printf("\n输入序号:");  
        scanf("%d",&st[i].rollno);  
        printf("\n输入姓名:");  
        scanf("%s",&st[i].name);  
    }  
    printf("\n学生信息列表:");  
    for(i=0;i<5;i++){  
        printf("\n序号:%d, 姓名:%s",st[i].rollno,st[i].name);  
    }  
       return 0;  
}

输出:

输入5个学生数据
输入序号:1
输入姓名:Sonoo
输入序号:2
输入姓名:Ratan
输入序号:3
输入姓名:Vimal
输入序号:4
输入姓名:James
输入序号:5
输入姓名:Sarfraz

学生信息列表:
序号:1, 姓名:Sonoo
序号:2, 姓名:Ratan
序号:3, 姓名:Vimal
序号:4, 姓名:James
序号:5, 姓名:Sarfraz