首页 理论教育C语言结构体类型和变量定义

C语言结构体类型和变量定义

【摘要】:“struct结构体名”为结构体数据类型名字,使用结构体类型名才能在程序中定义结构体变量。③“数据类型名结构体成员i;”指定了结构体类型中的一个结构体成员,结构体成员必须像以前的变量定义一样进行说明,成员名的命名规则与变量名相同,要符合标识符的命名原则。④结构体类型定义语句是一条完整的C语句,所以结构体类型的声明要用“;”作为结束符。

结构体类型定义的一般形式为:

在结构体类型的定义形式中,各组成成分的意义如下:

①struct是结构体声明的关键字,不能省略。“struct 结构体名”为结构体数据类型名字,使用结构体类型名才能在程序中定义结构体变量

②结构体名是一个标识符,命名是既要考虑其名字的含义,又必须要符合标识符的命名规则。

③“数据类型名 结构体成员i;”指定了结构体类型中的一个结构体成员,结构体成员必须像以前的变量定义一样进行说明,成员名的命名规则与变量名相同,要符合标识符的命名原则。

④结构体类型定义语句是一条完整的C语句,所以结构体类型的声明要用“;”作为结束符。

例如,描述学生信息的结构体可以如下定义:

在这个结构体类型定义示例中,结构体数据类型的名字为:struct student;该结构体数据类型由4个成员组成:第一个成员名为num,是一个整型变量;第二个成员名为name,是一个字符数组(字符串);第三个成员名为sex,是一个字符变量;第四个成员为score,是一个含有5个元素的整型数组。

在程序中定义好结构体类型后,还需要定义变量才能使用这个结构体类型。在C程序中,可以使用下面三种方法来定义结构体类型变量:

·先定义结构体数据类型,然后定义该数据类型的变量。

成员列表;

}变量列表;

例如,下面的C语句序列在定义结构体数据类型struct student的同时定义了结构体变量stu3和stu4。(www.chuimin.cn)

·省略结构体名,直接定义结构体变量。其一般形式为:

使用前两种方法时,都定义了完整的结构体数据类型,在程序中都可以使用该结构体数据类型名来定义另外的变量。使用第三种方法,由于没有定义完整的结构体类型(即该定义后没有结构体数据类型的名字),在程序中仅能使用同时定义的那几个变量,不能再定义另外的变量。

在结构体数据类型和结构体变量定义和使用过程中,还需要注意以下几点:

①结构体类型和结构体变量是两个不同的概念,不能混淆。结构体类型只是描述一个结构体数据类型的形式,编译系统并不对它分配内存空间。只有定义结构体类型变量时,系统才为该变量分配存储空间。

②结构体变量的存储长度为各成员长度之和。在程序中常用sizeof运算符获取,如sizeof(stu1)、sizeof(struct student)等。

③使用结构体变量时,一般不能将它作为一个整体来使用,只能使用结构体变量的各成员分量。

④结构体成员名字既可以与程序中其他变量名相同,也可以与其他结构体类型中的成员名相同。

⑤为使用方便,常用#define定义一个符号常量(宏定义)来代表一个结构体类型。例如,有宏定义为:

#define STUDENT struct student

则在程序此后的代码中,可以使用宏名字STUDENT表示struct student。下面两条C语句表示了同样的意义:

STUDENT stu1,stu2;//定义struct studeng类型变量stu1和stu2

struct student stu1,stu2;//定义struct studeng类型变量stu1和stu2⑥结构体成员也可以是一个其他类型的结构体变量,即该成员的数据类型是另外一个结构体类型,这种情况称为结构体类型的嵌套定义。例如,下面代码段描述了结构体嵌套定义的一个示例: