浅谈数组与结构的关系
定义一个数组:
类型名 数组名[数组长度] ;
定义一个结构体:
struct 结构名{
类型名 结构成员名1;
类型名 结构成员名2;
…
类型名 结构成员名n;
};
结构与数组都是用来存储多个信息的数据类型。
对于结构体,我们可以理解成一个允许存储不同类型数据的二维数组,结构成员名可当做二维数组的列,而每个结构成员存储的数据可当做二维数组的行,举个例子:
如果要定义三个同学,语文、数学、英语这三门课程的成绩。我们首先建一个表格:
语文 | 数学 | 英语 | |
---|---|---|---|
小明 | 89 | 90 | 56 |
小红 | 45 | 67 | 34 |
小刚 | 56 | 87 | 67 |
如果要将成绩导入程序,可以定义一个二维数组:
score[3][3]={{89,90,56},{45,67,34},{56,87 67}};
这样成绩就存到了程序中,如果要查看小明的数学成绩 ,需要将score[0][1]输出即可,但是有没有发现,这样太不方便了,我要想知道小明的数学成绩,还需要先查找小明在哪一行,以及数学成绩在哪一列。
那么,如果使用结构呢?
我们先定义一个结构:
struct score{
int chinese;
int math;
int english;
};
之后我们定义一个结构数组
struct score s[3];
然后以此给其赋值
s[0]={89,90,65}; //小明的成绩
s[1]={45,67,34}; //小红的成绩
s[2]={56,87,67}; //小刚的成绩
如此置入,我们需要查看小明的数学成绩时只需输出s[0].math
有人又会问,这也没轻松多少啊,还不是要记住小明是第几个?这不可否认,但如果我们想把小明的名字,年龄,爱好等不同类型的信息都录入。都可以使用结构来处理,甚至还可以在结构中定义一个指针,这是数组无法做到的。
struct score{
char name[20];
int age;
char sex[5];
int chinese;
int math;
int english;
char address[50];
};
因此我们可以说,结构是数组的升级版。结构里面可以定义数组,也可以定义结构数组,只有将二者结合起来,合理使用,才能更好地处理编写程序。