资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第8章 结构型与自定义类型,结构型是一种构造数据类型 用途:把不同类型的数据组合成一个整体-自定义数据类型 8.1 结构型类型定义,struct 结构型名 类型标识符 成员名; 类型标识符 成员名; . ;,成员类型可以是 基本型或构造型,struct是关键字, 不能省略,合法标识符 可省:无名结构型,例 struct student int num; char name20; char sex; int age; float score; char addr30; ;,结构型类型定义描述结构 的组织形式,不分配内存,例 2 struct book charISBN20; char name40; float price; ;,例 3 struct person int num; char name20; float score10; float average; ;,struct data . ;,结构型,例 struct student int num; char name20; char sex; int age; float score; char addr30; ; struct student stu1,stu2;,8.2 结构型变量的定义 (1) 先定义结构型,再定义变量 一般形式:,struct 结构型名 类型标识符 成员名; 类型标识符 成员名; . ; struct 结构型名 变量名表列;,(2) 定义结构型的同时定义变量 一般形式:,struct 结构型名 类型标识符 成员名; 类型标识符 成员名; . 变量名表列;,例 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2;,(3)定义无名结构型的同时定义变量 一般形式:,struct 类型标识符 成员名; 类型标识符 成员名; . 变量名表列;,例 struct int num; char name20; char sex; int age; float score; char addr30; stu1,stu2;,用无名结构型直接定义 变量只能一次,说明 结构型类型与结构型变量概念不同 类型:不分配内存; 变量:分配内存 类型:不能赋值、存取、运算; 变量:可以 结构型可嵌套 结构型成员名与程序中变量名可相同,不会混淆 结构型类型及变量的作用域与生存期,8.3 结构型变量的引用 引用规则 结构型变量不能整体引用,只能引用变量成员,可以将一个结构型变量赋值给另一个结构型变量 结构型嵌套时逐级引用,成员(分量)运算符 优先级: 1 结合性:从左向右,引用方式: 结构型变量名.成员名,8.4 结构型变量的初始化 形式一:,struct 结构型名 类型标识符 成员名; 类型标识符 成员名; . ; struct 结构型名 结构型变量=初始数据;,例 struct student int num; char name20; char sex; int age; char addr30; ; struct student stu1=112,“Wang Lin”,M,19, “200 Beijing Road”;,形式二:,struct 结构型名 类型标识符 成员名; 类型标识符 成员名; . 结构型变量=初始数据;,例 struct student int num; char name20; char sex; int age; char addr30; stu1=112,“Wang Lin”,M,19, “200 Beijing Road”;,形式三:,struct 类型标识符 成员名; 类型标识符 成员名; . 结构型变量=初始数据;,例 struct int num; char name20; char sex; int age; char addr30; stu1=112,“Wang Lin”,M,19, “200 Beijing Road”;,8.4 结构型数组 结构型数组的定义,形式一: struct student int num; char name20; char sex; int age; ; struct student stu2;,结构型数组初始化,例 struct int num; char name20; char sex; int age; stu =,;,顺序初始化: struct student int num; char name20; char sex; int age; ; struct student stu =100,“Wang Lin”,M,20, 101,“Li Gang”,M,19, 110,“Liu Yan”,F,19;,例 struct student int num; char name20; char sex; int age; stu =,;,结构型数组引用,引用方式: 结构型数组名下标.成员名,8.5 结构型指针 指向结构型变量的指针 定义形式:struct 结构型名 *结构型指针名; 例 struct student *p;,使用结构型指针变量引用成员形式,存放结构型变量在内存的起始地址,指向运算符 优先级: 1 结合方向:从左向右,例 指向结构型的指针变量,main() struct student long int num; char name20; char sex; float score; stu_1,*p; p= ,例 int n; int *p= n=10,struct student stu1; struct student *p= (*p).num=101,指向结构型数组的指针,例 指向结构型数组的指针,struct student int num; char name20; char sex; int age; stu3=10101,Li Lin,M,18, 10102,Zhang Fun,M,19, 10104,Wang Min,F,20; main() struct student *p; for(p=stu;pnum,p-name,p-sex,p-age); ,用指向结构型的指针作函数参数 用结构型变量的成员作参数-值传递 用指向结构型变量或数组的指针作参数-地址传递 用结构型变量作参数-多值传递,效率低,struct data int a, b, c; ; main() void func(struct data); struct data arg; arg.a=27; arg.b=3; arg.c=arg.a+arg.b; printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c); printf(Call Func().n); func(arg); printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c); void func(struct data parm) printf(parm.a=%d parm.b=%d parm.c=%dn,parm.a,parm.b,parm.c); printf(Process.n); parm.a=18; parm.b=5; parm.c=parm.a*parm.b; printf(parm.a=%d parm.b=%d parm.c=%dn,parm.a,parm.b,parm.c); printf(Return.n); ,copy,例 用结构型变量作函数参数,struct data int a, b, c; ; main() void func(struct data *parm); struct data arg; arg.a=27; arg.b=3; arg.c=arg.a+arg.b; printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c); printf(Call Func().n); func( ,例 用结构型指针变量作函数参数,类型定义形式: typedef type name;,例 typedef int INTEGER;,例 typedef float REAL;,类型定义后,与已有类型一样使用,例 INTEGER a,b,c; REAL f1,f2;,8.6 用typedef定义类型,-用自定义名字为已有数据类型命名,用户定义的 类型名,typedef是 关键字,已有数据类型名,typedef定义类型步骤 按定义变量方法先写出定义体 如 int i; 将变量名换成新类型名 如 int INTEGER; 最前面加typedef 如 typedef int INTEGER; 用新类型名定义变量 如 INTEGER i,j;,例 定义数组类型 int a100; int ARRAY100; typedef int ARRAY100; ARRAY a,b,c;, int a100,b100,c100;,例 定义指针类型 char *str; char *STRING; typedef char *STRING; STRING p,s10;, char *p; char *s10;,例 定义函数指针类型 int (*p)(); int (*POWER)(); typedef int (*POWER)(); POWER p1,p2;, int (*p1)(),(*p2)();,例 定义结构型类型 struct date int month; int day; int year; d;,例 定义结构型类型 struct date int month; int day; int year; DATE;,例 定义结构型类型 typedef struct date int month; int day; int year; DATE;,例 定义结构型类型 DATE birthday, *p;, struct date int month; int day; int year; birthday, *p;,类型定义可嵌套,例 typedef struct club char name20; int size; int year; GROUP; typedef GROUP *PG; PG pclub;, GROUP *pclub; struct club *pclub;,GROUP为结构型类型 PG为指向GROUP的指针类型,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号