结构体
一、结构体的定义
为了将一个事物的多重属性描述清楚,人为构造出来的一个可以容纳相同或者不同数据类型的元素的集合,结构体和数组一样,也是一种构造数据类型。
定义结构体类型的一般形式为:
struct 结构体名
{
数据类型 成员名1;
数据类型 成员名2;
......
数据类型 成员名n;
};
特点:①结构体类型是用户自行构造的。
②它由若干不同的基本数据类型的数据构成。
③它属于C语言的一种数据类型,与整形、浮点型相当。因此,定义它时不分配空间,只有用它定义变量时才分配空间。
二、结构体变量的声明、使用及初始化
1、结构体变量的声明
①先定义结构体类型,再定义变量名
struct 结构体名
{
类型 成员名;
类型 成员名;
........
};
struct结构体名 结构体变量名;
这里的结构体名是结构体的标识符,不是变量名。类型可以是基本的数据类型也可以是其他构造型数据类型。
②在定义类型的同时,定义变量。
struct结构体名
{
类型 成员名;
类型 成员名;
......
}变量名;
③直接定义结构体变量。
struct
{
类型 成员名;
类型 成员名;
......
}变量名;
2、结构体变量的使用
(1)结构体变量是不同数据类型的若干数据的集合体。在程序中使用结构体变量时,一般情况下,不能把它作为一个整体参加数据处理,而参加各种运算和操作的是结构体变量的各个成员项数据。
(2)结构体变量的成员用以下一般形式表示:
结构体变量名.成员名
(3)结构体变量名在使用中应注意以下几点
①不能将一个结构体类型变量作为一个整体加以引用,而只能对结构体类型变量中的各个成员分别引用。
②如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级成员。只能对最低级的成员进行赋值或存取以及运算。
③对成员变量可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。
④在数组中,数组是不能彼此赋值的,而结构体类型变量可以相互赋值。在C程序中,同一结构体类型的结构体变量之间允许相互赋值,而不同结构体类型的结构体变量之间不允许相互赋值,即使两者包含有同样的成员。
3、结构体变量的初始化
与其他类型变量一样,也可以给结构体的每个成员赋初值,这称为结构体的初始化。
一种是在定义结构体变量时进行初始化,格式如下:
struct 结构体名 变量名={初始数据表};
另一种是在定义结构体类型时进行结构体变量的初始化,格式如下:
struct 结构体名
{
类型 成员名;
类型 成员名;
.......
}变量名={初始数据表};