结构体类型声明的说明(1) 声明了一种类型,而不是定义变量 ●结构体名可以没有,但是这样就无法再 次使用该结构体类型了 成员表列中是成员( Member)的定义 成员的定义形式与变量定义相同 成员类型可以是另一结构体类型,但不 可直接或间接递归嵌套 成员表列不可为空,至少要有一个成员 C语言程序设计-第8章结构体6
C语言程序设计 - 第8章 结构体 6 结构体类型声明的说明 (1) ⚫ 声明了一种类型,而不是定义变量 ⚫ 结构体名可以没有,但是这样就无法再 次使用该结构体类型了 ⚫ 成员表列中是成员(Member)的定义 ⚫ 成员的定义形式与变量定义相同 ⚫ 成员类型可以是另一结构体类型,但不 可直接或间接递归嵌套 ⚫ 成员表列不可为空,至少要有一个成员
结构体类型声明的说明(2) 注意{}不表示复合语句,其后有分号 同一结构体的成员不能重名 不同结构体的成员可以重名 结构体成员和其他变量可以重名 结构体类型与其成员或其他变量可重名 struct test[ int testi test 结构体类型名称是 struct结构体名 注意 struct关键字不能省略 C语言程序设计-第8章结构体7
C语言程序设计 - 第8章 结构体 7 结构体类型声明的说明 (2) ⚫ 注意{}不表示复合语句,其后有分号 ⚫ 同一结构体的成员不能重名 ⚫ 不同结构体的成员可以重名 ⚫ 结构体成员和其他变量可以重名 ⚫ 结构体类型与其成员或其他变量可重名 ◼ struct test { int test; } test; ⚫ 结构体类型名称是struct 结构体名, 注意struct关键字不能省略
结构体类型声明的说明(3) 即使两个结构体声明中的成员类型、名 称、顺序都完全一致,它们也是不同的 类型 结构体类型也要“先声明,后使用” 如果结构体类型声明在函数内部,则该 函数之外无法引用此结构体类型 般把结构体类型声明放到文件最前面 ●也可以把结构体类型声明放在头文件里 C语言程序设计-第8章结构体8
C语言程序设计 - 第8章 结构体 8 结构体类型声明的说明 (3) ⚫ 即使两个结构体声明中的成员类型、名 称、顺序都完全一致,它们也是不同的 类型 ⚫ 结构体类型也要“先声明,后使用” ⚫ 如果结构体类型声明在函数内部,则该 函数之外无法引用此结构体类型 ⚫ 一般把结构体类型声明放到文件最前面 ⚫ 也可以把结构体类型声明放在头文件里
结构体类型的声明举例 struct student I unsigned numi /*学号*/ char name[20];/*姓名*/ char sex/ /*性别*/ unsigned agei /*年龄*/ float score/ /*分数*/ char addr[50];/*地址* }; C语言程序设计-第8章结构体9
C语言程序设计 - 第8章 结构体 9 结构体类型的声明举例 struct student { unsigned num; /* 学号 */ char name[20]; /* 姓名 */ char sex; /* 性别 */ unsigned age; /* 年龄 */ float score; /* 分数 */ char addr[50]; /* 地址 */ };
结构体变量的定义(1) 先声明结构体类型再定义变量 struct student unsigned num char name [20]; char sex/ unsigned agei f1oa七 score i char addr [501 struct student stul stu2 i C语言程序设计-第8章结构体10
C语言程序设计 - 第8章 结构体 10 结构体变量的定义 (1) ⚫ 先声明结构体类型再定义变量 struct student { unsigned num; char name[20]; char sex; unsigned age; float score; char addr[50]; }; struct student stu1, stu2;