首页 理论教育结构体变量的定义及初始化

结构体变量的定义及初始化

【摘要】:可以采取以下三种方法定义结构体类型变量。例如:struct student student1,student2/*结构体变量名*/则表示定义了student1,student2为struct student类型的变量。

1.结构体类型变量的定义

在8.1.1节中我们指定了一个结构体类型,它相当于一个模型,但其中并无具体数据,系统对之也不分配实际内存单元。为了能在程序中使用结构类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。可以采取以下三种方法定义结构体类型变量。

(1)先声明结构体类型再定义变量名。

8.1.1节中已定义了一个结构体类型struct student,可以用它来定义变量。例如:

struct student student1,student2/*结构体变量名*/

则表示定义了student1,student2为struct student类型的变量。

在定义了结构体变量后,系统会为之分配内存单元(如student1和student2在内存中各占59个字节)。

应当注意,将一个变量定义为标准类型(基本数据类型)与定义为结构体类型的不同之处在于后者不仅要求指定变量为结构体类型,而且要求指定为某一特定的结构体类型(如struct student类型),因为程序可以定义出许多种不同的结构体类型。而在定义变量为整型(或其他基本数据类型)时,只需指定为int型即可。

(2)在声明类型的同时定义变量。

它的作用与第一种方法相同,即定义了两个struct student类型的变量student1,student2,这种方法定义的一般形式为:

(3)直接定义结构类型变量。(www.chuimin.cn)

其一般形式为:

即不出现结构体名。

关于结构体类型,有几点要说明:

(1)类型与变量是不同的概念,不能混淆。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。

(2)对结构体中的成员(即域)可以单个使用,它的作用与地位相当于普通变量。

(3)结构体中的成员也可以是一个结构体变量。

先声明一个struct date类型,它代表日期并包括3个成员month,day,year。然后再声明struct student类型时,将成员birthday指定为struct date类型。

(4)成员名可以与程序中的变量名相同,二者不代表同一对象。

2.结构体变量的初始化

和其他类型变量一样,结构体变量也可以在定义时指定初始值。