C语言 结构体
定义及方法
C语言允许自己建立由不同类型数据组成的组合型的数据结构,称为结构体。
声明一个结构体类型的一般形式为:
struct 结构体名
{ 成员表列};
花括号内是该结构体所包含的子项,称为结构体的成员。对各成员都应进行类型声明,即: 类型名 成员名;
成员可以属于另一个结构体类型。如:
struct Date //声明一个结构体类型 struct Date
{
int month;
int day;
int year;
};
struct Student //声明一个结构体类型 struct Student
{
int num;
char name[20];
char sex;
int age;
struct Date birthday; //成员birthday 属于struct Date 类型
char addr[30];
};
定义结构体类型变量
(1) 先声明结构体类型,再定义该类型的变量,如:
struct Student student1,student2;
struct Student 为结构体类型名;
student1,student2 为结构体变量名;
(2)在声明类型的同时定义变量,如:
struct 结构体名
{
成员表列;
}变量名表列;
(3)不指定类型名而直接定义结构体类型变量,如:
struct
{
成员表列;
}变量名表列;
定义结构体数组:
struct 结构体名
{ 成员表列 } 数组名[数组长度] ;
或者先声明一个结构体类型,然后再用此类型定义结构体数组:
结构体类型 数组名[数组长度];
对结构体数组初始化的形式是在定义数组的后面加上:
={初值表列};
结构体变量的初始化和引用
在定义结构体变量时可以对它的成员进行初始化。初始化列表是用花括号括起来的一些常量,这些常量依次赋给结构体变量中的各成员。注意:是对结构体变量初始化,而不是对结构体类型初始化。如:
struct Student
{
long int num;
char name[20];
char sex;
char addr[20];
}a={10101,"Li Lin",'M',"123 Beijing Road"};
也允许对某一成员初始化,如
struct Student b={ .name = " Zhang Fang"};
(2) 可以引用结构体变量中成员的值,引用方式为:
结构体变量名.成员名