C语言程序设计8结构体.ppt

上传人:京东小超市 文档编号:5905823 上传时间:2020-08-14 格式:PPT 页数:17 大小:356KB
返回 下载 相关 举报
C语言程序设计8结构体.ppt_第1页
第1页 / 共17页
C语言程序设计8结构体.ppt_第2页
第2页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言程序设计8结构体.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计8结构体.ppt(17页珍藏版)》请在三一文库上搜索。

1、,讲课提纲,C语言程序设计,Chap.8 结构体、共同体 和枚举类型,桂林电子科技大学,苇姨絮叉米入熏竖溺离阵万冒舍妄丑臆错卢楞元酉剁屋龋铝呜条例综好孜C语言程序设计8结构体C语言程序设计8结构体,Chap.8 结构体共同体 和枚举类型,一 概述 由不同类型的数据项组成的复合类型,称为结构体类型 成员项结构体分量 struct 结构体类型名 类型名1 成员名表1; 类型名2 成员名表2; 类型名n 成员名表n; ,8.1 结构体类型,二 结构体类型变量的定义 1 先后定义 先定义类型,后定义变量,Ex struct stu long num; char name20,sex; int age;

2、 float score; char addr30; ,2 同时定义,Ex struct stu long num; char name20,sex; int age; float score; char addr30; s1,s2;,3 直接定义 缺省结构体类型名,Ex struct long num; char name20,sex; int age; float score; char addr30; s1,s2;,struct stu s1,s2;,袄凰饭旷镭顺看凋蛹孔蓬呼墟蛰鞍晕蚀胯迪诱钓泳勾迹楼柏诣斜撑仕肩痈C语言程序设计8结构体C语言程序设计8结构体,结构体2,三 结构体类型变量

3、的初始化 struct stu s1=20101,Li Ping,M,18,86,桂林;,四 结构体类型变量的引用 成员 结构体变量名.成员名,五 结构体数组 Ex struct stu s40; 结构体数组:数组元素是结构体变量 先后定义 同时定义 直接定义 初始化 struct stu s40= 20101,Li Ping,M,18,86,桂林, 20102,Wang Yifei,F,19,95,柳州 ; 对s0、s1赋初值,六 结构体指针 struct 结构类型名 *结构体指针名 指向运算符和圆点运算符 (*p).成员名 p-成员名 p是指针,不是结构体变量,不能写成:p.成员名,顺疟衙

4、推里萝争守流尔稻若砍随咽鼓稗嗓虱藩价发急涵挺捌趋疵妻污塔披C语言程序设计8结构体C语言程序设计8结构体,例题,Ex802 struct person char name9; int age; ; struct person class10= Join,17, Paul,19, Mary,18, Adam,16 ;,class2.name0,Ex804 struct stud char num6; int s4; double ave; ,6,8,22,8,Ex803 struct ex int x; float y; char z; example; A) struct是结构体类型的关键字 B

5、) example是结构体类型名 C) x,y,z都是结构体成员名 D) struct ex是结构体类型,Ex801 #include struct abc int a,b,c; ; main() struct abc s2=1,2,3,4,5,6; int t; t=s0.a+s1.b; printf(%dn,t); ,s0 s1,a b c a b c,权然价约抬梢蒂堑赵瓣溜溪殴垄局谰驳婪泣鞋典搜鹤裹苍谁族砰恍挺鄂债C语言程序设计8结构体C语言程序设计8结构体,Ex805 #include struct st int x; int *y; *p; int dt4=10,20,30,40;

6、struct st aa4= 50, ,Ex806 以下程序用来输出结构 体变量ex所占存储单元 的字节数 #include struct st char name20; double score; main() struct st ex; printf(ex size:%dn, ); ,sizeof(ex),+(p-x)=51,例题,(+ p)-x=60,+(*p-y)=21,衫瞒防庶汪摄痘腰拔枕蛹冀兽枝硅址嫌淫纯湘逾阔达取髓边脂孤爱褂抠忘C语言程序设计8结构体C语言程序设计8结构体,8.2 自定义类型,Ex2 typedef struct int n; char ch8; PER; A)

7、PER是结构体变量名 B) PER是结构体类型名 C) struct是结构体类型名 D) typedef struct是结构体类型,Ex3 对结构体变量定义不正确的是 A) typedef struct aa B) #define AA struct aa int n; AA int n; float m; float m; AA; tdl; AA tdl; C) struct D) struct int n; int n; float m; float m; aa; tdl; struct aa tdl;,typedef 类型名1 类型名2; 类型名1是已有定义的类型标识符,类型名2是一个用

8、户定义的新 类型标识符,Ex1 typedef int INTEGER; 有了上面的定义以后, INTEGER m,m; 等价于 int m,m;,啥埋律碌锹梯寓查腔希榔奎瘫柬想狙糊邦菊昂臂格业悸胆彬瘫粮盐都摧狸C语言程序设计8结构体C语言程序设计8结构体,Ex807 #include typedef struct int a; char b; ST; ST *fun(ST x) ST *px; x.a=100; x.b=C; px= ,Ex808 #include #define N 5 typedef struct char name20; char num10; USER; getdat

9、a(USER *sp) int i; printf(Enter name /* 输入时,姓名与电话号码各占一行 */,例题,逆缘梆门解宇椎体魁炽佩椿源课电劣磁着言设僻拽挑员焊杭患族绍柬漫嘿C语言程序设计8结构体C语言程序设计8结构体,例题,outdata(USER *sp) int i; printf(After sorted:n); for(i=0;i0) k=j; temp=spk; spk=spi; spi=temp; main() USER spN,temp; getdata(sp); getsort(sp); outdata(sp); /* 输入 排序 输出 */,毫特咕羽揪短停疲坏

10、隔茂喉赖纬鬼颊衅忻犊整厩拯笛壁不亩温椽出罚陪怯C语言程序设计8结构体C语言程序设计8结构体,8.3 链表,指针域 指向下一结点,数据域,Ex809 #include struct node int data; struct node *next; ; typedef struct node NODETYPE; main() ,0,NODETYPE a,b,c,*h,*p;,a.data=10; b.data=20; c.data=30;,h=,a.next=,c.next=0;,while(p) printf(%4d,p-data); p=p-next; printf(n);,p=h;,输出:

11、 10 20 30,struct link char ch; struct link *p; a;,郧折吏厌檀猿哟凤柄课碳晦谎渣掣窘稚蜂札顷月昼弗马制蒙父很春锦烛人C语言程序设计8结构体C语言程序设计8结构体,建立链表,Ex810 建立带有头结点的单向链表 读取数据 生成新结点 存入数据 将新结点插入到链表,SLIST *creat_slist() int c; SLIST *h,*s,*p; scanf(%d, /* 返回头指针 */ ,10,20,亿顾巴咋举锹加炼鲍班西冲墩擒赦肖脱迂孝衔律糙术钾勋荫银所判惶咏肋C语言程序设计8结构体C语言程序设计8结构体,输出链表,print_slist(

12、SLIST *h) SLIST *p; p=h-next; if(p= =0) printf(Linklist is null!n); else printf(Head); do printf(-%d,p-data); p=p-next; while(p!=0); printf(-Endn); ,矩氰缮赏晴辩载遇踢面键佬壳徽杯僧鲸掩步竖谤欠始祈刻呢滨概定痉旦滤C语言程序设计8结构体C语言程序设计8结构体,插入结点,insert_snode(SLIST *h) int x,y; /* 在值为x的结点前,插入值为y的结点 */ SLIST *s,*p,*q; printf(insert:x,y=)

13、; scanf(%d%d , ,设x为20,y为15:插在中间,p= =0 :空表,不进入循环,0,歹匡突亚坝堂勘血彝吨圈惩宜窿丈续矛甸凿搏色切佛座构酷蒸靴絮谆扬伦C语言程序设计8结构体C语言程序设计8结构体,插入结点,insert_snode(SLIST *h) int x,y; /* 在值为x的结点前,插入值为y的结点 */ SLIST *s,*p,*q; printf(insert:x,y=); scanf(%d%d , ,设x为40,y为15: p=0 ,插在最后,完雍抱翻昆招仑虎率吾爆摆哗症丸红散纹咒毡哺后绽堑塞哑碴炮魏做巢枯C语言程序设计8结构体C语言程序设计8结构体,例题,B),

14、C),D),嫌褥署溃家咐淹埠埂杏漾讽漾部屠劝扒循恍拯孙趴搪肠痢阁敏蓄倦走烯积C语言程序设计8结构体C语言程序设计8结构体,8.4 共同体,共同体的类型说明和变量的定义方式和结构体完全相同,不同的是:结构体变量中的成员各自占有自己的存储空间,而共同体变量中的所有成员占有同一的存储空间 在共同体类型的说明中,与结构体类型不同的是用关键字union代替 struct,E811 main() union char i2; int k; r; r.i0=2; r.i1=0; printf(%dn,r.k); ,r.i1=5;, 共同体类型数据的特点 1 同一内存段可以用来存放几种不同类型的成员,但在每一

15、瞬时只 能存放其中一种,只有一个成员起作用。 2 共同体变量中起作用的成员是最后一次存放的成员,在存入一个 新成员后,原有的成员就失去作用。 3 共同体变量的地址和它的各成员的地址都是同一地址。 4 不能对共同体变量名赋值,也不能企图引用变量名来得到一个值, 又不能在定义共同体变量时对它初始化。 5 不能把共同体变量作为函数参数,也不能使函数带回共同体变量, 但可以使用共同体变量的指针。 6 共同体类型可以出现在结构体类型定义中,也可以定义共同体数 组。反之结构体也可以出现在共同体类型定义中,数组也可以作 为共同体的成员。,榨绞慎租诧选礼惩隐愉翠诗恰衔欧焚耪苦稗姥巴羞差老讼央钢业镜臆敌革C语言

16、程序设计8结构体C语言程序设计8结构体,sizeof(struct test)=12,例题,字世复饮还浓富唆钒迭花纤讳还吊垒信钟意礼涝昭校屿菇夷栖棍谐蚕召雅C语言程序设计8结构体C语言程序设计8结构体,8.5 枚举类型,一 枚举类型变量的定义 定义类型 enum 枚举类型名 枚举常量表 ; 定义变量 enum 枚举类型名 枚举变量表; Ex enum weekday sun,mon,tue,wed,thu,fri,sat; enum weekday w1,w2; 二 枚举类型的应用 1 枚举类型变量的取值只能是枚举常量表中的某一常量 2 n个枚举常量组成的枚举类型,枚举常量对应的序号是 0,1,2,.,n-1 3 枚举类型可作为 while 或 for 语句中循环控制变量的类型 4 枚举变量可进行关系、自增减(+,- -)运算 5 枚举值可以用来作判断比较 6 一个整数不能直接赋给一个枚举变量,妆诀锥坤貉祖芬次寅输窝烯崎最厘镀干余雅决恕却忿簿窟辣走蓖炕径河梢C语言程序设计8结构体C语言程序设计8结构体,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1