C++语言程序设计

2.结构变量的说明
有了结构类型的定义之后，就可以定义这种类型的变量，要定义一个结构类型的变量，可以采用以下三种方法。
（1）先定义结构类型，再定义结构类型变量。
这种方式定义结构变量的一般形式是：
结构类型名 变量名1，变量名2，…，变量名n；
我们还以结构类型example为例，下面的语句定义了两个example型变量x、y：
example x,y;
在C语言中，定义结构类型的变量，除要结构类型名外，还要有关键字struct。上面的语句在C中的定义应为：
struct example x,y;
而在C++中，则允许不带关键字struct。
（2）在定义结构类型的同时定义结构变量。
其一般形式为：
struct 结构名
{
成员列表
}变量名列表;
按照这种形式，（1）中的结构变量定义可以写为：
struct example
{
int a;
float b;
double c;
example * ptr;
}x,y;
（3）直接说明结构变量
其一般形式为：
struct
{
成员列表
}变量名列表;
这种方法与（2）中方法的区别在于：省去了结构名，而直接给出结构变量。由于它不便于使用，我们很少用这种方法定义结构变量。 　　我们再看下面的例子：

| 例8-2

struct date
{
int month;
int day;
int year;
};

struct{
int num;
char name[20];
char sex;
date birthday;
float score;
}boy1,boy2;

首先定义一个称之为date结构类型，它由month(月)、day(日)、year(年) 三个成员组成。 然后，又定义了一个无名结构及该结构的两个变量boy1、boy2，它包括num、name、sex 、birthday、score五个成员。需要注意的是：后一个结构的成员包括date结构变量birthday，这说明一个结构的成员也可以又是另一个结构的变量，即可构成嵌套的结构。此外，结构中的成员名可与程序中其它变量同名，它们互不干扰。
结构类型变量在内存中所占的存储空间是各个成员在内存中所占空间的总和。对于Child结构的变量cute，具有成员"double height;double weight;int years;int months;char gender;"它在内存中所占的空间就是个两个double、两个int和一个char类型所占的存储空间的总和。如下图所示：

| 图8-1 结构Child型变量cute的内存分配示意