文档详情

C语言课件_清华大学谭浩强版c9.ppt

发布:2018-03-19约字共27页下载文档
文本预览下载声明
第九章 结构体与共用体 9.1 结构体 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体 ------- 自定义数据类型 结构体类型定义 9.2 结构体变量的定义 先定义结构体类型,再定义结构体变量 一般形式: 定义结构体类型的同时定义结构体变量 一般形式: 9.3 结构体变量的引用 引用规则 结构体变量不能整体引用,只能引用变量成员 9.4 结构体变量的初始化 形式一: 9.5 结构体数组 结构体数组的定义 三种形式: 结构体数组初始化 9.6 结构体和指针 指向结构体变量的指针 定义形式: struct 结构体名 * 结构体指针名 ; 例 struct student *p; 指向结构体数组的指针 用指向结构体的指针作函数参数 用结构体变量的成员作参数 ---- 值传递 用指向结构体变量或数组的指针作参数 ---- 地址传递 用结构体变量作参数 ---- 多值传递,效率低 9.8 共用体 构造数据类型,也叫联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖 ) 共用体类型定义 定义形式: typedef 定义类型步骤 按定义变量方法先写出定义体 如 int i; 将变量名换成新类型名 如 int INTEGER; 最前面加 typedef 如 typedef int INTEGER; 用新类型名定义变量 如 INTEGER i,j; struct [ 结构体名 ] { 类型标识符 成员名; 类型标识符 成员名; ……………. } ; 成员类型可以是 基本型或构造型 struct 是关键字 , 不能省略 合法标识符 可省:无名结构体 例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; name num sex age score addr 2字节 2字节 20 字节 1字节 4字节 30 字节 … ….. 结构体类型定义描述结构 的组织形式,不分配内存 结构体类型定义的作用域 例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; struct student stu1,stu2; struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. } ; struct 结构体名 变量名表列; 例 #define STUDENT struct student STUDENT { int num; char name[20]; char sex; int age; float score; char addr[30]; }; STUDENT stu1,stu2; struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. } 变量名表列; 例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2; 直接定义结构体变量 一般形式: struct { 类型标识符 成员名; 类型标识符 成员名; ……………. } 变量名表列; 例 struct { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2; 用无名结构体直接定义 变量只能一次 说明 结构体类型与结构体变量概念不同 类型:不分配内存; 变量:分配内存 类型:不能赋值、存取、运算 ; 变量:可以 结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆 结构体类型及变量的作用域与生存期 例 struct date { int month; int day; int year; }; struct student { int num; char name[20]; struct date birthday; }stu; num name birthday month day year 例 struct student { int num; char name[20]; struct date { int month; int day; int year; }birthday; }stu; num name birthday month day year 可以将一个结构体变量赋值给另一个结构体变量 结构体嵌
显示全部
相似文档