清华大学出版社 TSINGHUA UNIVERSITY PRESS “结构体名”用作结构体类型的标志,它又称“结构体标 记”( structure tag)。上面的结构体声明中 student就是结 构体名(结构体标记)。大括弧内是该结构体中的各个成员, 由它们组成一个结构体。例如,上例中的num、name、 sex等都是成员。对各成员都应进行类型声明,即 类型名成员名 也可以把“成员表列”称为“域表”。每一个成员也称为结 构体中的一个域。成员名定名规与变量名同。 “结构体”这个词是根据英文单词 Istructure译出的。有些C 语言书把 structure直译为“结构”。作者认为译作“结构” 会与一般含义上的“结构”混淆(例如,数据结构、程序 结构、控制结构等)。日本把 structure译作“结构体”或 “构造体”,作者认为译作“结构体”比译作“结构”更 确切一些,不致与一般含义上的“结构”混淆
“结构体名”用作结构体类型的标志,它又称“结构体标 记”(structure tag) 。上面的结构体声明中student就是结 构体名(结构体标记)。大括弧内是该结构体中的各个成员, 由它们组成一个结构体。例如,上例中的num、name、 sex等都是成员。对各成员都应进行类型声明,即 类型名成员名 也可以把“成员表列”称为“域表”。每一个成员也称为结 构体中的一个域。成员名定名规与变量名同。 “结构体”这个词是根据英文单词structure译出的。有些C 语言书把structure直译为“结构”。作者认为译作“结构” 会与一般含义上的“结构”混淆(例如,数据结构、程序 结构、控制结构等)。日本把structure译作“结构体”或 “构造体”,作者认为译作“结构体”比译作“结构”更 确切一些,不致与一般含义上的“结构”混淆
清华大学出版社 TSINGHUA UNIVERSITY PRESS 112定义结构体类型变量的方法 前面只是指定了一个结构体类型,它相当于一个模型,但其 中并无具体数据,系统对之也不分配实际内存单元。为了 能在程序中使用结构体类型的数据,应当定义结构体类型 的变量,并在其中存放具体的数据。可以采取以下三种方 法定义结构体类型变量。 先声明结构体类型再定义变量名 如上面已定义了一个结构体类型 struct student,可以用它来 定义变量。如: struct student student1 student2 结构体类型名结构体变量名; 定义了 studen和 student2为 Istruct student类型的变量,即它 们具有 struct student类型的结构。如图11.2所示
11.2 定义结构体类型变量的方法 前面只是指定了一个结构体类型,它相当于一个模型,但其 中并无具体数据,系统对之也不分配实际内存单元。为了 能在程序中使用结构体类型的数据,应当定义结构体类型 的变量,并在其中存放具体的数据。可以采取以下三种方 法定义结构体类型变量。 1. 先声明结构体类型再定义变量名 如上面已定义了一个结构体类型struct student,可以用它来 定义变量。如: struct student student1, student2 结构体类型名 结构体变量名; 定义了student1和student2为struct student类型的变量,即它 们具有struct student类型的结构。如图11.2所示
清华大学出版社 TSINGHUA UNIVERSITY PRESS student1: 10001 Zhang Xin M 1990. 5 hanghai student2: 10002 Wang Li F2098 Beijing 图112 在定义了结构体变量后,系统会为之分配内存单元。 例如 student1和 Student2在内存中各占59个字节 (2+20+1+2+4+30=59) 应当注意,将一个变量定义为标准类型(基本数据类型) 与定义为结构体类型不同之处在于后者不仅要求指 定变量为结构体类型,而且要求指定为某一特定的 结构体类型(例如 Istruct student类型)。因为可以定义 出许许多多种具体的结构体类型。而在定义变量为 整型时,只需指定为int型即可
图11.2 在定义了结构体变量后,系统会为之分配内存单元。 例如student1和student2在内存中各占59个字节 (2+20+1+2+4+30=59)。 应当注意,将一个变量定义为标准类型(基本数据类型) 与定义为结构体类型不同之处在于后者不仅要求指 定变量为结构体类型,而且要求指定为某一特定的 结构体类型(例如struct student类型)。因为可以定义 出许许多多种具体的结构体类型。而在定义变量为 整型时,只需指定为int型即可
清华大学出版社 TSINGHUA UNIVERSITY PRESS 如果程序规模比较大,往往将对结构体类型的声明 集中放到一个文件(以.h为后缀的“头文件”)中。 哪个源文件需用到此结构体类型则可用# include命 令将该头文件包含到本文件中。这样做便于装配, 便于修改,便于使用。 2.在声明类型的同时定义变量 例如: struct student Rint num; char name 20: char sex int age;
如果程序规模比较大,往往将对结构体类型的声明 集中放到一个文件(以.h为后缀的“头文件”)中。 哪个源文件需用到此结构体类型则可用#include命 令将该头文件包含到本文件中。这样做便于装配, 便于修改,便于使用。 2. 在声明类型的同时定义变量 例如: struct student {int num; char name[20]; char sex; int age;
清华大学出版社 TSINGHUA UNIVERSITY PRESS float score char addr; studenti, student2 它的作用与第一种方法相同,即定义了两个 struct student类型的变量 studenti、 student2。这种形式 的定义的一般形式为 struct结构体名 成员表列 }变量名表列;
float score; char addr[30]; }student1,student2; 它的作用与第一种方法相同,即定义了两个struct student类型的变量student1、student2。这种形式 的定义的一般形式为 struct 结构体名 { 成员表列 }变量名表列;