9.1.3 结构体类型与结构体变量
9.1.4 结构体变量的定义
和基本类型的变量一样,结构体变量也要先定义,后使用。C语言中,结构体变量的定义有三种形式:
1. 第一种形式
这种形式先声明结构体类型,再定义结构体变量。其一般形式为:
struct 结构体类型名
{
数据类型名1 成员名1;
… …
数据类型名n 成员名n;
};
struct 结构体类型名 变量名列表;
前面在定义结构体变量songjiang、luda、likui、linchong时都是采用这种形式,下面再使用此形式定义两个hero类型的变量wusong和sunerniang:
struct hero wusong,sunerniang; //定义wusong,sunerniang两个结构体变量。
2. 第二种形式
这种形式在声明类型的同时定义变量。其一般形式为:
struct 结构体类型名
{
数据类型名1 成员名1;
… …
数据类型名n 成员名n;
} 变量名列表;
同样是定义两个hero类型变量wusong和sunerniang,用此种形式定义如下:
struct hero
{
int number; //排名
char sex; //性别
char star_name[20]; //星名
char name[20]; //名称
char nickname[20]; //绰号
char position[20]; //职业
char weapon[20]; //使用武器
} wusong,sunerniang; //定义了wusong,sunerniang两个结构体变量。
3. 第三种形式
这种形式直接定义结构体变量,而没有结构体类型名。其一般形式为:
struct
{
数据类型名1 成员名1;
… …
数据类型名n 成员名n;
} 变量名列表;
同样是定义两个结构体类型的变量wusong和sunerniang,用此种形式定义如下:
struct
{
int number; //排名
char sex; //性别
char star_name[20]; //星名
char name[20]; //名称
char nickname[20]; //绰号
char position[20]; //职业
char weapon[20]; //使用武器
} wusong,sunerniang; //定义了wusong,sunerniang两个结构体变量。
9.1.5 定义结构体变量注意事项
l 如果使用第三种形式定义结构体变量,因为此形式没有给出结构体类型名。所以只能在定义结构体同时定义结构体变量,比如上面使用第三种形式定义的变量wusong和sunerniang就遵循了此规则。
l 结构体的成员也可以是一个结构体变量。
例如,下面给结构体hero增加一个成员death_day:
struct date
{
int month;
int day;
int year;
};
struct hero
{
… …
struct date death_day; //死亡时间
… …
} wusong,sunerniang; //定义了wusong,sunerniang两个结构体变量。
上面的程序先定义了一个struct date类型,包括三个成员:month(年),day(月),year(日)。然后定义了struct hero类型,其中的成员death_day既是结构体hero的成员,又是struct date 类型的变量。这两个结构体的关系如图9.3所示:
图9.3 结构体类型的结构体成员
最新作品《C语言参悟之旅》全新上市,敬请关注!
官方网站:http://www.tqbooks.net/product/gb/product_detail.asp?catalogid=10&productid=1474
China-pub有售:http://www.china-pub.com/49980