定义结构体类型的一般形式如下:
其中,struct是关键字,作为定义结构体数据类型的标志,其后面紧跟的是结构体类型名,由用户自行定义。大括号内是结构体的成员表列,其中说明了结构体所包含的成员及其数据类型。大括号外的分号不能省略,表示结构体类型说明的终止。
成员表列由若干个成员(也称为数据项或分量)组成,每个成员都是该结构体类型的一个组成部分。对每个成员也必须做类型说明,其形式如下:
类型说明符成员名;
成员名的命名方法应符合标识符的命名规定。
例如,对学生信息结构体类型的定义,假设学生信息的必要项目有学号(num)、姓名(name)、性别(sex)、成绩(score)等。
在这个结构体类型定义中,结构体类型名为student_type,该结构体类型由4个成员组成。第1个成员为num长整型变量;第2个成员为name字符数组;第3个成员为sex字符变量;第4个成员为score实型变量,定义结构体类型之后,即可进行变量说明。凡说明为结构体类型student_type的变量都由上述4个成员组成。
由此可见,结构体类型是一种复杂的数据类型,是数目固定、类型不同的若干有序变量的集合。
关于结构体类型有以下几点需要说明。(www.xing528.com)
(1)结构体类型中的成员,既可以是基本数据类型,也可以是另一个已经定义的结构类型。例如:
首先定义一个结构体类型date,它由month、day和year 3个成员组成。再定义结构体类型student_type,其中的成员birthday为结构体类型date,即成员birthday由month、day和year 3个成员组成。此时,结构体类型student_type的结构如表9-2所示。
表9-2 结构体类型student_type的结构
(2)数据类型相同的成员,既可逐个、逐行分别定义,也可合并成一行定义。例如,上述日期结构体类型的定义可改写为如下形式。
(3)结构体类型中的成员名,可以与程序中的变量同名,但它们代表的是不同的对象,互不影响。
(4)定义结构体类型可以在函数的内部进行,也可以在函数的外部进行。在函数内部定义的结构体,其作用域仅限于该函数内部,而在函数外部定义的结构体,其作用域是从定义处开始到本源程序文件结束。
总之,结构体类型的定义只是描述结构体类型数据的组织形式,它规定这个结构体类型使用内存的模式,并没有分配一段内存单元来存放各数据项成员。只有定义了这种类型的变量,系统才会为变量分配内存空间,占据存储单元。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。