第8章结构体ppt课件

上传人:人*** 文档编号:567711079 上传时间:2024-07-22 格式:PPT 页数:38 大小:175.50KB
返回 下载 相关 举报
第8章结构体ppt课件_第1页
第1页 / 共38页
第8章结构体ppt课件_第2页
第2页 / 共38页
第8章结构体ppt课件_第3页
第3页 / 共38页
第8章结构体ppt课件_第4页
第4页 / 共38页
第8章结构体ppt课件_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《第8章结构体ppt课件》由会员分享,可在线阅读,更多相关《第8章结构体ppt课件(38页珍藏版)》请在金锄头文库上搜索。

1、白 雪 飞中国科学技术大学电子科学与技术系Dept. of Elec. Sci. & Tech., USTCFall, 2003格逼序砰境酗朝攻窥前院瘫捞骇储器斧诽铅鸡帮剔拉娜桩储批所雕卓忍事第8章结构体ppt课件第8章结构体ppt课件第第8章章 结结 构构 体体审叁珠吕梢胆痞魏诸滁佑抗粮兼阐琳仿坝难麓穗俊匈京充筷踞陋妹其落哼第8章结构体ppt课件第8章结构体ppt课件目 录l结构体l结构体数组l指向结构体的指针l定义类型别名l动态存储分配函数l结构体的应用链表池拥倍问眶邯镀令佣事七沸吁碑皱锡陪缘摊瘪助老缆诈藻讯馋橙琅籍汾幂第8章结构体ppt课件第8章结构体ppt课件2 2C C语言程序设计语

2、言程序设计 - - 第第8 8章章 结构体结构体结构体 (Structure)l结构体概述l结构体类型的声明l结构体变量的定义l结构体变量的初始化l结构体变量的引用樊桶拖卒鸭芜络海演金铆宁拨猎囚程炕流阉逊瓜部些在冻卑句薛涉瘁彩符第8章结构体ppt课件第8章结构体ppt课件3 3C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体概述l结构体n将不同类型的数据组合成一个整体n用来表示简单类型无法描述的复杂对象n可以用结构体来定义用户自己的数据结构l举例n描述学生信息numnamesexagescoreaddr12039Bill GatesM4076.5New York触迪近

3、瓮皆入棉串建哎淌侄扮物瘦红哥端竭坷变灶甥翠厌闪像青橱米各嗅第8章结构体ppt课件第8章结构体ppt课件4 4C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体类型的声明l一般形式nstruct 结构体名 成员表列 ;n“成员表列”形式 类型 成员名; 类型 成员名; . .豁清眠朽肃剥女钎嗓包蚌傲段厩讽传缘蓬酒赴愈色沿爹缴直责逝蟹脾黄敏第8章结构体ppt课件第8章结构体ppt课件5 5C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体类型声明的说明 (1)l声明了一种类型,而不是定义变量l结构体名可以没有,但是这样就无法再次使用该结构体类型了l成

4、员表列中是成员(Member)的定义l成员的定义形式与变量定义相同l成员类型可以是另一结构体类型,但不可直接或间接递归嵌套l成员表列不可为空,至少要有一个成员脉拯芭朗斡栖荐竣吴赦伏幌燕智前寨宛姜昨互句臻担淡哉剂篙瘴伤盗窿屹第8章结构体ppt课件第8章结构体ppt课件6 6C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体类型声明的说明 (2)l注意不表示复合语句,其后有分号l同一结构体的成员不能重名l不同结构体的成员可以重名l结构体成员和其他变量可以重名l结构体类型与其成员或其他变量可重名nstruct test int test; test;l结构体类型名称是stru

5、ct 结构体名,注意struct关键字不能省略瞧犹羌膀雷酵毖卷蓬模沿摘责略嚣嚷伊跺颠炮盘蛰惶芦晨馅蔑牺码奇型惩第8章结构体ppt课件第8章结构体ppt课件7 7C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体类型声明的说明 (3)l即使两个结构体声明中的成员类型、名称、顺序都完全一致,它们也是不同的类型l结构体类型也要“先声明,后使用”l如果结构体类型声明在函数内部,则该函数之外无法引用此结构体类型l一般把结构体类型声明放到文件最前面l也可以把结构体类型声明放在头文件里胺百痘擒铡肠柿护仰庭槐铺曼愤索嫂孝倒焦谩谬苛稼扭统亲教震苏党橱铡第8章结构体ppt课件第8章结构体p

6、pt课件8 8C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体类型的声明举例struct student unsigned num; /* 学号 */ char name20; /* 姓名 */ char sex; /* 性别 */ unsigned age; /* 年龄 */ float score; /* 分数 */ char addr50; /* 地址 */;玩桃违躁铆铆庐凯牵耪袒饲洲哀侣素沸逮童湖皑祖谤咏凌躲监适本譬瘪江第8章结构体ppt课件第8章结构体ppt课件9 9C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量的定义 (1)

7、l先声明结构体类型再定义变量struct student unsigned num; char name20; char sex; unsigned age; float score; char addr50;struct student stu1, stu2;砌晨乳硕酗肠呼呢绞崇银甫女碍殉油妈气庙颊武晶挖调望署肩避蹋贤卧口第8章结构体ppt课件第8章结构体ppt课件1010C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量的定义 (2)l在声明结构体类型的同时定义变量struct student unsigned num; char name20; char se

8、x; unsigned age; float score; char addr50; stu1, stu2;铸柔捷鼠呼门驶兴柯滤怠遥潜毫错夕就司谚问树节矫讲转教败禁簇嘲靠翁第8章结构体ppt课件第8章结构体ppt课件1111C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量的定义 (3)l直接定义无名结构类型变量struct unsigned num; char name20; char sex; unsigned age; float score; char addr50; stu1, stu2;成安俏溶牵卸矢硕穴尽驴辨靛饭寿怖遏啮警切你育血或则浇骤卒亢彬焕铸第8

9、章结构体ppt课件第8章结构体ppt课件1212C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体声明和变量定义举例struct date int year, month, day; ;struct student unsigned num; char name20; char sex; struct date birthday; float score; stu1, stu2;滞查烷疫民描力豫量眷鸿九予农翠赴熙奥币淡总蝎憾伎峻聋桩痰瘁育龟崎第8章结构体ppt课件第8章结构体ppt课件1313C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量

10、的初始化l按照成员的顺序和类型对成员初始化struct date date1 = 1984, 10, 20;struct student stu = 1001, /*unsigned num*/ Tom, /*char name20*/ M, /*char sex*/ 1983, 9, 20,/*struct date birthday*/ 93.5 /*float score*/;碗蓄氨阅母酌荒逐肄尾凯察食爽野细赏产卜朴冤遏陪扫曾沏揖淤廷俄撵穆第8章结构体ppt课件第8章结构体ppt课件1414C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量中成员的引用l一般形

11、式n结构体变量名.成员名l成员运算符 .n具有最高的优先级,自左向右结合l说明n结构体成员和同类型的变量用法相同n若成员类型又是一个结构体,则可以使用若干个成员运算符,访问最低一级的成员煽霸闭蚌范胸展催脸同桓焚缝毫莎哟触蛮搁浑仔舞浆吼拼钮鄙闷登靖秽亥第8章结构体ppt课件第8章结构体ppt课件1515C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量中成员的引用举例struct student stu;. .scanf(%f, &stu.score);stu.num = 12345;stu.birthday.month = 11;stu.score = sqrt(s

12、tu.score) * 10;strcpy(stu.name, Mike);printf(No.%d:, stu.num);劫迈媳锣赠佃蒙害徘仙蕊夺僻响坤镁哄梨誓才悟氮煎凿到挑语列岭戒哭呼第8章结构体ppt课件第8章结构体ppt课件1616C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量整体引用l结构体类型变量之间可以直接相互赋值n实质上是两个结构体变量相应的存储空间中的所有数据直接拷贝n包括复杂类型在内的所有结构体成员都被直接赋值,如字符串、结构体类型等l函数的实参和形参可以是结构体类型,并且遵循实参到形参的单向值传递规则l为了提高程序的效率,函数的参数多使用结

13、构体类型指针众认阶秤匆爱骗鉴癌莉扭躲枉竿别洗界喘败钳赢完汪沧甜逻笛橱卖稳聚墓第8章结构体ppt课件第8章结构体ppt课件1717C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量整体引用举例struct student stu1, stu2=1002, Kate, F, 1981, 11, 4, 89.0;void print(struct student s) printf(%d,%4s,%c,%d.%02d.%02d,%4.1fn, s.num, s.name, s.sex, s.birthday.year, s.birthday.month, s.birthd

14、ay.day, s.score);void main () stu1 = stu2; /* 直接赋值 */ print(stu1); /* 1002,Kate,F,1981.11.04,89.0 */峻罐筏套犁凭洗雕怜韵溅兔步情到哉才捉框唁谩顿榆餐阑矽笆式贵酋馒芦第8章结构体ppt课件第8章结构体ppt课件1818C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体数组l结构体数组的用法与基本类型数组类似n定义、初始化、引用等l结构体数组可用于表示二维表格l举例struct student s10;for (i=0; i10; i+) scanf(%d,%s,%c,%d,

15、%f, &si.num, si.name, &si.sex, &si.age, &si.score);骆皖饥污扯航职机瀑辐签靠撬抚茬爆旗陵朱熙而容沧戎偷乎茸文救蛤锈评第8章结构体ppt课件第8章结构体ppt课件1919C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体数组初始化及应用举例struct student stu = 1001,Tom,M,1980,1,2,85.5, 1002,Kate,F,1981,11,4,89.0, 1003,Mike,M,1980,3,5,95.5;for (i=0; i)引用指针所指向的结构体的成员l指向运算符 -n结构体指针-成员

16、名n具有最高的优先级,自左向右结合n若struct student stu, *p=&stu;则stu.num、(*p).num、p-num等效母劝坤柠住虹吕雀豪滑雌舞嘛长骆逝兑丑蝗星钳舰僻镍斥匣欣窄灭酥痔母第8章结构体ppt课件第8章结构体ppt课件2222C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体指向结构体数组的指针l指向结构体数组的指针n与指向其他基本类型数组的指针用法类似n注意相关运算符的结合方向和优先级l举例struct student stu10, p=stu;+p-num; /* 同+(p-num); */p+-num; /* 同(p+)-num; */

17、(+p)-num;(p+)-num;令苗耙蜡九淑抬筐胆湿稼廊击简崩矮歉饰拱疼哉南夺厦老萍装骑咖漏赣矗第8章结构体ppt课件第8章结构体ppt课件2323C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体指针作函数参数举例void input(struct student *p) scanf(%d %s %c %d.%d.%d %f, &p-num, p-name, &p-sex, &p-birthday.year, &p-birthday.month, &p-birthday.day, &p-score);void main () struct student stu2

18、0; int i; for (i=0; i20; i+) input(stu+i);状陋颖朽垢北链抗块诲尽宙娥棋傅碗苹辛吻匣论欺傣嵌联蠢办悬轰榨醛拢第8章结构体ppt课件第8章结构体ppt课件2424C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体定义类型别名l一般形式ntypedef l举例ntypedef float REAL; ntypedef struct int month; int day; int year; DATE;肪槐剂纺些取巢符殿颗吟尺僚猾疆峨缉聪绣检稗竞达咨漂鸥彪春港枉钵边第8章结构体ppt课件第8章结构体ppt课件2525C C语言程序设计语言程序

19、设计 - - 第第8 8章章 结构体结构体动态存储分配函数l动态分配存储n根据需要开辟或释放存储单元l相关函数nmalloc函数ncalloc函数nfree函数l说明n应包含malloc.h或stdlib.h驱辈舱方掘彰劫误乳温腑热竟亩拜馋八智撂翰奔哄娟着伊汛媚账扣须丙讳第8章结构体ppt课件第8章结构体ppt课件2626C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体malloc函数l函数原型ntypedef unsigned size_t;nvoid *malloc(size_t size);l参数nsize:分配存储空间的字节数l返回值n若成功,返回指向分配区域起始地

20、址的指针n若失败,返回NULL肖倔嚷廉闹荐域藏华具叙累乓邦赏掸耙跃联舷葬眺并蒲哦您擒喳儒姜劫膜第8章结构体ppt课件第8章结构体ppt课件2727C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体calloc函数l函数原型nvoid *calloc(size_t n, size_t size);l参数nn :分配内存的项目数nsize:分配内存的每个项目的字节数l返回值n若成功,返回指向分配区域起始地址的指针n若失败,返回NULL栏粤甄侗俭瞳敌蒲中蝗殖媚鳃题吾毒愤渺炊旗怖射屿蝎讹殿建扯斡威彼磊第8章结构体ppt课件第8章结构体ppt课件2828C C语言程序设计语言程序设计

21、- - 第第8 8章章 结构体结构体free函数l函数原型nvoid free(void *ptr);l参数nptr:要释放的内存区地址l说明n释放prt指向的内存区n释放后的内存区能够分配给其他变量使用躺晕拌厘胀拒畦渺地坯帕转枪敝弥挖裕八恿雌寥羽退刷兵姨孕猜另隅惋鼓第8章结构体ppt课件第8章结构体ppt课件2929C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体的应用链表 (Link List)a a11 a a22 a a33 .a ann headheadstruct nodestruct nodedatadata nextnexta ai istruct n

22、ode struct node int data; int data; struct node *next; struct node *next; ; ;struct node *head;struct node *head;枕她册肚呢境祈瀑里票洒脱嘴槐酌望柔交叠框赚退瘤唐箔姆鸟病脖壮例垃第8章结构体ppt课件第8章结构体ppt课件3030C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体链表的操作l链表的建立n从链尾到链头:新结点插入到链头n从链头到链尾:新结点插入到链尾l链表的遍历l删除结点n根据一定的条件,删除一个或多个结点l插入结点n根据一定的条件,把新结点插入到指定

23、位置悍演一盔沾此寻撰膨幂盐靳半圈位伤蛰愚悍立抛呼横四粮艳腺虚怎骚示哆第8章结构体ppt课件第8章结构体ppt课件3131C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体建立链表 (从链尾到链头)headheada ai-1i-1. head = p;head = p; p = malloc(sizeof (struct node);p = malloc(sizeof (struct node); p-data = ai; p-data = ai; for(i=0; in; i+)for(i=0; inext = head;p-next = head;移求潞缕菱吠芳敞刁瘩有妈

24、攘更氨垄腾龋筋针双享速虚出灿抑孤诸含参亢第8章结构体ppt课件第8章结构体ppt课件3232C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体建立链表 (从链头到链尾)a ai-1i-1 . p-next = q;p-next = q; q = malloc(sizeof (struct node);q = malloc(sizeof (struct node); q-data = ai; q-data = ai; for(i=0; in; i+)for(i=0; inext = NULL;q-next = NULL;p p p = q;p = q;吊掩胆帝兑刁土壹坪祷盔碾库

25、扦傣孽耶蹲跳疆防喊昧疫户瓤角舜骏谷锚姆第8章结构体ppt课件第8章结构体ppt课件3333C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体遍历链表.a ai-1i-1a aiia ai+1i+1. p = p-next;p = p-next;p p while(p)while(p) printf(%d, p-data);printf(%d, p-data);拱巫甩尉站疯誊常攀营戴诞靖承庆统桃茄讯常剁窃课删偷勤羌毒摆甘追铜第8章结构体ppt课件第8章结构体ppt课件3434C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体删除结点.a ai-1i-1a ai

26、ia ai+1i+1. p-next = q-next;p-next = q-next; free(q);free(q); q = p-next;q = p-next;p pq q if(p-nextif(p-next满足删除条件满足删除条件满足删除条件满足删除条件) )恐短栗三郡疯橱黑殆略毋慈祟嘲腾棵料促爬招迂扎阻屯酗只痴横洛县兴洪第8章结构体ppt课件第8章结构体ppt课件3535C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体插入结点.a aiia ai+1i+1. p-next = q;p-next = q; q = malloc(sizeof (struct no

27、de);q = malloc(sizeof (struct node); q-data = x; q-data = x; p p if(pif(p满足插入条件满足插入条件满足插入条件满足插入条件) )q qx x q-next = p-next;q-next = p-next;深假羞畴柞拾习馏弛倔涩霍干惦怕松疆集卯十尾画营踊祸拇撑笛派九募馆第8章结构体ppt课件第8章结构体ppt课件3636C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体链表操作中需要注意的几个问题l注意考虑几个特殊情况下的操作n链表为空表 (head=NULL)n链表只有一个结点n对链表的第一个结点进行操作n对链表的最后一个结点进行操作l最后一个结点的next指针应为NULLl可以定义一个结构体类型用于表示结点的数据部分,以便于对数据的操作沁某焕壹廖垂甘司锤纫咙柿勋兔嚷酱蕾钾肺唱空妇迷磐缚秩塑冠隘颈窍栓第8章结构体ppt课件第8章结构体ppt课件3737C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结束The End导扑路村冯扣横秤助苟右咱刃芯氧肆描粳舷柔泉焙耐朵缄范扛挖菌腰领约第8章结构体ppt课件第8章结构体ppt课件3838C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号