C结构数据类型
数组可以看成是一种集合,用来记录一组类型相同的数据,如果要同时记录多个数据类型不同的数据,数组就不适用了。这时,C语言的结构类型(Structure)就能派上用场了。简单来说,结构就是一种能让用户自定义的数据类型,并且可以将一种或多种关联的数据类型集合在一起,形成全新的数据类型。
结构简介
结构能够形成一种派生数据类型(Derived Data Type),是一种以C语言现有的数据类型作为基础,允许用户建立自定义的数据类型。声明结构后,要先告知编译程序产生了一种新的数据类型,还必须声明结构变量,才能够使用结构存取成员。
例如,描述一位学生的成绩数据时,除了要记录学号与姓名等字符串数据外,还必须定义数值数据类型来记录英语、语文、数学等成绩,此时数组就不再适用,可以把这些数据类型组合成结构类型,以简化数据处理的问题。
声明结构变量
声明结构变量有两种方式:第一种方式为结构与变量分开声明,先定义结构主体,再声明结构变量;第二种方式为在定义结构主体时一并声明结构变量。结构的组成必须有结构名称与结构项目,而且必须使用C语言的关键字struct来建立,声明方式如下:
struct 结构类型名称
{
数据类型 结构成员1;
数据类型 结构成员2;
…
}结构变量1;
或
结构类型名称 结构变量2;
在结构定义中可以使用C语言的变量、数组、指针甚至是其他结构成员以形成嵌套结构的声明。下面定义一个简单结构:
struct person
{
char name[10];
int age;
int salary;
}; /* 务必加上分号;*/
注意定义后的分号不可省略,通常新手在使用结构定义数据类型时会犯这个错误。还要特别强调的是结构中不能有同名结构存在,下面这种结构声明就是错误的:
struct student
{
char name[80];
struct student next; /* 不能有同名结构 */
};
定义了结构就等于定义了一种新的数据类型,可以按下列声明方式声明结构变量:
struct student s1, s2;
也可以在定义结构主体的同时声明结构变量:
struct student
{
char name[10];
int score;
int ID;
} s1, s2;
或者采用不定义结构名称直接声明结构变量,并同时设置初始值:
struct
{
char name[10];
int score;
int ID;
} s1={ "Justin",90,10001};