第六章结构与枚举.ppt

上传人:sccc 文档编号:5997260 上传时间:2023-09-12 格式:PPT 页数:36 大小:1.56MB
返回 下载 相关 举报
第六章结构与枚举.ppt_第1页
第1页 / 共36页
第六章结构与枚举.ppt_第2页
第2页 / 共36页
第六章结构与枚举.ppt_第3页
第3页 / 共36页
第六章结构与枚举.ppt_第4页
第4页 / 共36页
第六章结构与枚举.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《第六章结构与枚举.ppt》由会员分享,可在线阅读,更多相关《第六章结构与枚举.ppt(36页珍藏版)》请在三一办公上搜索。

1、程序设计基础(C语言),Email:C语言交流群:,教师:,第六章 结构与枚举,掌握结构的定义和声明掌握结构成员的访问结构体变量的初始化掌握结构数组的定义和使用掌握结构指针的定义和使用掌握结构指针访问成员的方法掌握类型定义typedef的使用理解枚举的定义和使用,引入,数组是一组同类型数据的集合例如 int a10存放的是10个整数,数组a中只能存放整数,不能存放浮点数、长整形、字符串等例如 学生基本信息有:学号、姓名、性别、出生日期、籍贯、家庭住址、政治面貌、系部、专业、班级、课程、成绩等这些数据的类型不同,就不能存放在一个数组中,而且相同的数据类型也不便于存放在同一数组中,比如学号、姓名和

2、家庭地址等,引入,基于以上因素,引入一种新的数据结构结构结构是一个或多个变量的集合,这些变量的类型可能是不同的数据类型,结构优点:便于组织和管理复杂的数据,6.1 结构基本知识,结构定义格式struct 结构名 成员表列;,struct studentchar num10;char name8;char sex;char birth10;char addr50;.;,结构名,成员,struct pointint x;int y;,结构名,成员,6.1 结构基本知识,结构变量的声明(定义)三种方法(1)先声明结构体类型再定义变量名例如:struct point pt1,pt2;,定义了pt1和p

3、t2为struct point类型的变量,即它们具有struct point类型的结构.,结构类型,结构变量,pt1pt2,6.1 结构基本知识,结构变量的声明(定义)三种方法(2)在定义结构类型的同时定义变量,struct结构名 成员列表 变量名列表;,例如:struct pointint x;int y;pt1,pt2;,6.1 结构基本知识,结构变量的声明(定义)三种方法(3)直接定义结构变量,struct 成员表列 变量名表列;即不出现结构体名。,例如:struct int x;int y;pt1,pt2;,6.1 结构基本知识,结构变量成员的访问(引用),格式:结构变量名.成员名例如

4、 struct point pt1,pt2;pt1.x=100;pt1.y=50;pt2.x=300;pt2.y=600;,6.1 结构基本知识,结构变量成员可以是结构,struct studentchar num10;char name8;char sex;char birth10;char addr50;struct course major10;stu1,stu2;,成员是结构变量,struct coursechar couname20;float score;,6.1 结构基本知识,结构变量成员的访问(引用)规则(1)不能将一个结构体变量作为一个整体进行输入和输出,例如 struct

5、point pt1,pt2;pt1.x=100;pt1.y=50;pt2.x=300;pt2.y=600;,printf(“pt1=(%d,%d)n”,pt1);printf(“pt2=(%d,%d)n”,pt2);,printf(“pt1=(%d,%d)n”,pt1.x,pt1.y);printf(“pt2=(%d,%d)n”,pt2.x,pt2.y);,6.1 结构基本知识,结构变量成员的访问(引用)规则(2)如果成员本身又属一个结构类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。,struct studentchar num10;c

6、har name8;char sex;char birth10;char addr50;struct course major10;stu1,stu2;,struct coursechar couname20;float score;,stu1.name=“张三”;stu1.major.couname=“程序设计基础(C)”;stu1.major.score=95;,6.1 结构基本知识,结构变量成员的访问(引用)规则(3)结构成员可以和普通变量一样运算,例:struct point pt1,pt2;pt1.x=100;pt1.y=50;pt2.x=300;pt2.y=600;pt1.x+=5

7、0;pt1.y-=20;,pt1.x+?,6.1 结构基本知识,结构变量成员的访问(引用)规则(4)可以引用结构变量成员的地址,也可以引用结构变量的地址。,例 scanf(%d,/*输入pt1.x的值*/printf(%X,pt1);/*输出pt1的首地址*/,?,但不能用以下语句整体读入结构体变量,例如:scanf(%d,d,pt1);结构体变量的地址主要用作函数参数,传递结构体变量的地址。,6.1 结构基本知识,结构变量占用的存储空间,结构变量所占用的存储空间是该结构所有成员占用的存储空间和,struct studentchar num10;char name8;char sex;char

8、 birth10;char addr50;struct course major10;stu1,stu2;,struct coursechar couname20;float score;,stu1和stu2占用的空间都是319个字节,6.1 结构基本知识,结构变量占用的存储空间,结构变量所占用的存储空间是该结构所有成员占用的存储空间和,pt1和pt2占用的空间都是8个字节,struct pointint x;int y;pt1,pt2;,6.1 结构基本知识,结构变量的初始化方法(1)定义结构变量的同时初始化,例:struct point pt1=100,50,pt2=300,600;str

9、uct student stu1=“1210501304”,“张三”,F,“1994-08-30”,“重庆市”,“数据结构”,80;,6.1 结构基本知识,结构变量的初始化方法(2)先定义结构变量,然后初始化,注意:此时只能对结构变量的每个成员进行初始化,例:struct point pt1,pt2;pt1.x=100;pt1.y=50;pt2.x=300;pt2.y=600;,struct student stu1;strcpy(stu1.num,1210501304);strcpy(stu1.name,张三);stu1.sex=F;strcpy(stu1.birth,1994-08-30)

10、;strcpy(stu1.addr,重庆市);strcpy(stu1.major.couname,数据结构);stu1.major.score=80;,6.1 结构基本知识,例6-1 求两点距离,6.1 结构基本知识,例6-2 求矩形面积,6.2 结构数组,结构与普通的数据类型一样,也可以定义结构数组,格式:struct 结构名 数组名常量表达式;,6.2 结构数组,struct studentchar num10;char name8;char sex;char birth10;char addr50;;,struct student stu100;定义数组stu,可以存放100个学生的数据

11、,数组stu的每个元素都是一个结构体变量,6.2 结构数组,结构数组的初始化方法,例:struct student stu2=“1210501304”,“张三”,F,“1994-08-30”,“重庆市”,“1210501330”,“李四”,M,“1994-10-05”,“四川省”;,struct studentchar num10;char name8;char sex;char birth10;char addr50;;,6.2 结构数组,结构数组的初始化方法,struct studentchar num10;char name8;char sex;char birth10;char add

12、r50;stu2=“1210501304”,“张三”,F,“1994-08-30”,“重庆市”,“1210501330”,“李四”,M,“1994-10-05”,“四川省”;,6.2 结构数组,结构数组元素成员的引用,#include struct country int num;char name20;x5=1,China,2,USA,3,France,4,Englan,5,Spanish;void main()int i;for(i=3;i 5;i+)printf(%d%c,xi.num,xi.name0);,程序执行结果4E5S,6.2 结构数组,结构数组元素整体的引用,#include

13、 struct country int num;char name20;x5=1,China,2,USA,3,France,4,Englan,5,Spanish;void main()struct country ss;ss=x3;printf(“%d%sn”,ss.num,ss.name);,6.3 指向结构的指针,同基本类型的指针类似,结构也可以定义其指针变量,格式:struct 结构名*指针名,struct studentchar num10;char name8;char sex;char birth10;char addr50;;struct student stu;struct s

14、tudent*pstu;pstu=,6.3 指向结构的指针,通过指针访问结构成员的方法(1)用*访问,struct studentchar num10;char name8;char sex;char birth10;char addr50;;struct student stu;struct student*pstu;pstu=,(*pstu).sex=m;strcpy(*pstu).name,“王刚”),6.3 指向结构的指针,通过指针访问结构成员的方法(2)用-访问,struct studentchar num10;char name8;char sex;char birth10;cha

15、r addr50;;struct student stu;struct student*pstu;pstu=,pstu-sex=m;strcpy(pstu-name,“王刚”),6.3 指向结构的指针,通过指针访问结构成员的方法,有以下说明和定义语句 struct student int age;char num8;struct student stu=20,200401“;struct student*p=以下选项中引用结构体变量成员的表达式错误的是 A)stu.num B)p-num C)(*p).num D)stu-age,6.4 类型定义,C语言通过typedef建立新的数据类型名例如

16、 typedef short int16;int16 x,y;表示定义了两个短整形的变量x和y,6.4 类型定义,struct studentchar num10;char name8;char sex;char birth10;char addr50;;struct student stu1,stu2;,struct studentchar num10;char name8;char sex;char birth10;char addr50;;typedef struct student Student;Student stu1,stu2;,6.4 类型定义,struct studentch

17、ar num10;char name8;char sex;char birth10;char addr50;;typedef struct student Student;Student stu1,stu2;,typedef struct char num10;char name8;char sex;char birth10;char addr50;Student;Student stu1,stu2;,6.5 枚举,将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。,格式:enum 枚举名枚举列表;,例:enum weekdaysun,mon,tue,wed,thu,fri,sat;,6.5 枚举,说明:(1)在编译中,对枚举元素按常量处理,故称枚举常量。(2)枚举元素作为常量,它们是有值的,语言编译按定义时的顺序使它们的值为,当然定义时,可以人为改变他的值。(3)枚举值可以用来作判断比较。(4)一个整数不能直接赋给一个枚举变量。,本章小结,1.结构的优点:为便于管理和组织复杂的数据2.结构的定义格式:struct 结构名成员列表;3.结构成员引用4.指向结构的指针,以及用指针引用结构成员5.枚举,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号