布局范例界说和布局变量说明
在实际问题中,一组数据往往具有差异的数据范例。譬喻, 在学生挂号表中,姓名应为字符型;学号可为整型或字符型; 年数应为整型;性别应为字符型;后果可为整型或实型。 显然不能用一个数组来存放这一组数据。 因为数组中各元素的范例和长度都必需一致,以便于编译系统处理惩罚。为了办理这个问题,C语言中给出了另一种结构数据范例——“布局”。 它相当于其它高级语言中的记录。
“布局”是一种结构范例,它是由若干“成员”构成的。 每一个成员可以是一个根基数据范例可能又是一个结构范例。 布局既是一种“结构”而成的数据范例, 那么在说明和利用之前必需先界说它,也就是结构它。如同在说明和挪用函数之前要先界说函数一样。
一、布局的界说
界说一个布局的一般形式为:
struct 布局名
{
成员表列
};
成员表由若干个成员构成, 每个成员都是该布局的一个构成部门。对每个成员也必需作范例说明,其形式为:
范例说明符 成员名;
成员名的定名应切合标识符的书写划定。譬喻:
struct stu
{
int num;
char name[20];
char sex;
float score;
};
在这个布局界说中,布局名为stu,该布局由4个成员构成。 第一个成员为num,整型变量;第二个成员为name,字符数组;第三个成员为sex,字符变量;第四个成员为score,实型变量。 应留意在括号后的分号是不行少的。布局界说之后,即可举办变量说明。 凡说明为布局stu的变量都由上述4个成员构成。由此可见, 布局是一种巨大的数据范例,是数目牢靠,范例差异的若干有序变量的荟萃。
二、布局范例变量的说明
说明布局变量有以下三种要领。以上面界说的stu为例来加以说明。
1. 先界说布局,再说明布局变量。如:
struct stu
{
int num;
char name[20];
char sex;
float score;
};
struct stu boy1,boy2;
说明白两个变量boy1和boy2为stu布局范例。也可以用宏界说使一个标记常量来暗示一个布局范例,譬喻:
#define STU struct stu
STU
{
int num;
char name[20];
char sex;
float score;
};
STU boy1,boy2;
2. 在界说布局范例的同时说明布局变量。譬喻:
struct stu
{
int num;
char name[20];
char sex;
float score;
}boy1,boy2;
3. 直接说明布局变量。譬喻:
struct
{
int num;
char name[20];
char sex;
float score;
}boy1,boy2;
第三种要领与第二种要领的区别在于第三种要领中省去了布局名,而直接给出布局变量。三种要领中说明的boy1,boy2变量都具有图7.1所示的布局。说明白boy1,boy2变量为stu范例后,即可向这两个变量中的各个成员赋值。在上述stu布局界说中,所有的成员都是根基数据范例或数组范例。成员也可以又是一个布局, 即组成了嵌套的布局。譬喻,图7.2给出了另一个数据布局。 按图7.2可给出以下布局界说:
struct date{
int month;
int day;
int year;
}
struct{
int num;
char name[20];
char sex;
struct date birthday;
float score;
}boy1,boy2;
首先界说一个布局date,由month(月)、day(日)、year(年) 三个成员构成。 在界说并说明变量 boy1 和 boy2 时, 个中的成员birthday被说明为data布局范例。成员名可与措施中其它变量同名,互不滋扰。布局变量成员的暗示要领在措施中利用布局变量时, 往往不把它作为一个整体来利用。