第六章 结构体
● 结构体类型的定义
● 结构体类型变量和指针的定义
● 结构体类型变量的使用和初始化
● 结构体数组的使用
C++ Programming Language
中国地质大学计算机教研室
§7.1 结构体类型的定义
形式:
struct 结构体名
{
结构体成员表列
};
结构体成员表列也称“域表”,每个成员也
称结构体的一个域。
C++ Programming Language
中国地质大学计算机教研室
例:定义学生结构体类型
struct student
{
long int num;
char name[20];
char sex;
float score;
char addr[30];
student *p;
};
说明:(1)定义一个结构体,仅定义一个数据类型,并
不分配存储空间。
C++ Programming Language
中国地质大学计算机教研室
(2)结构体成员可以是基本类型(整型、实型、字符型、
数组、指针等),也可是已定义的另一结构体类型。
(3)函数内定义的结构体,仅限于该函数内使用。
所有函数外部(main()前)定义的结构体,为所有函
数使用。
(4)结构体成员不能是自身结构体变量,但可用结构体
指针作成员。
C++ Programming Language
中国地质大学计算机教研室
例:成员可为结构体变量
struct date
{
int month;
int day;
int year;
};
struct student
{
long int num;
char name[20];
char sex;
struct date birthday;
char addr[30];
};
C++ Programming Language
中国地质大学计算机教研室
§7.2 结构体变量和指针的定义
形式:
结构体名 结构体变量(指针)名表;
例:struct student stud1,stud2,*p;
说明:
(1)C++中,关键字struct 可省略。
(2) 可在定义结构体类型时,同时定义结构体变
量或指针。
C++ Programming Language
中国地质大学计算机教研室
例:
struct student
{
long int num;
char name[20];
float score;
char addr[30];
}stud1,stud2,*p;
每个结构体变量分配存储空间:
4+20+4+30=58 Byte
C++ Programming Language
中国地质大学计算机教研室
也可用长度运算符测定:
形式:
sizeof(数据类型或变量名)
例如:
sizeof(stud1)
C++ Programming Language
中国地质大学计算机教研室