- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6次课--指针与结构体、动态存储分配.ppt
又开始学习新的一章了 教案 主要内容 结构体指针变量的定义 结构体指针变量的引用 结构体指针变量定义及引用举例 包含指针的结构体 包含指针的结构体应用举例 指向结构体数组的指针 指向结构体数组的指针应用举例 学习数组时的引例 学习数组时的引例 用数组改写引例 动态存储分配和回收的实现 动态分配内存函数:malloc malloc函数使用举例 动态回收内存函数: free free函数使用举例 内存的动态分配和回收举例 内存的动态分配和回收举例 本次课总结 下课 《C语言与数据结构》 第6次课-----循环结构 * 第7章 第6次课----指针与结构体、动态存储分配 《C语言与数据结构》 1.结构体指针变量的定义及引用 2.指向结构体数组的指针的应用 3.内存管理函数:malloc和free。 教学重点 区分内存空间的静态分配和动态分配。 教学难点 通过本次课的学习,使学生掌握结构体指针变量的概念、结构体指针变量的引用、指向结构体数组的指针的应用、动态存储分配内存空间的方法,以及常用的内存管理函数。 教学目标 指针与结构体、动态存储分配 教学主题 指针与结构体 指向结构体的指针 包含指针的结构体 指向结构体数组的指针 动态存储分配 常用内存管理函数 结构体指针变量的概念 当一个指针变量用来指向一个结构体变量时,称之为结构体指针变量。 结构体指针变量的定义形式 struct 结构体类型名 *结构体指针变量名; 举例 struct student { char name[20]; int score[3]; } ; struct student *pstu; 结构体指针变量名 先赋值,后使用。 赋值时,把已经定义过的结构体变量的首地址赋给结构体指针变量即可。 例如: struct student s, *pstu; pstu = s; 通过结构体指针变量访问成员的方法 ( *结构体指针变量 ).成员名 或为: 结构体指针变量-成员名 例如: ( *pstu ).name 或者 pstu-name 小括弧不可少 用得多 【例7-1】举例说明结构体指针变量的定义及使用方法。 源程序 运行程序(6_1) 看源程序(6_1) 回顾 前面学习过两种构造数据类型。 一种是数组,可以把具有相同类型的若干数据组合成一个整体; 另一种是结构体,可以将不同类型的数据组合成一个有机整体。 结构体类型 在结构体类型的定义中,成员可以是哪些类型? 可以是整型、字符型、实型、数组、另一种结构体类型。同理,结构体成员也可以是指针类型。 【例7-2】举例说明包含指针的结构体的定义及使用方法。 源程序 运行程序(6_2) 看源程序(6_2) 注意点 指向结构体的指针、包含指针的结构体,两者引用方式的不同。 结构体指针变量可以指向一个结构体数组或者数组中的某个元素。 【例7-3】编写程序,完成一组学生数据的输出。要求用指针变量输出结构体数组。 流程图 源程序 运行程序(6_3) 看源程序(6_3) 【引例】输出?5名学生某门功课的成绩及平均成绩。 #include stdio.h void main() { float s1, s2, s3, s4, s5, avg; printf ( 请输入5个学生的成绩(以逗号隔开):); scanf(%f,%f,%f,%f,%f, s1, s2, s3, s4, s5 ); avg=s1 + s2 + s3 + s4 + s5; avg =avg/5; printf( 5个学生成绩为: ); printf( %.2f, %.2f, %.2f, %.2f, %.2f\n, s1, s2, s3, s4, s5 ); printf( 平均成绩为:%.2f\n, avg ); } 【引例】输出?5名学生某门功课的成绩及平均成绩。 如果不是5名学生,而是50名,程序会如何? 如果学生数不定,又该如何编程? 缺点 解决办法 思考 随学生个数增加,编程将日益繁琐; 如学生数目在编程时未定,则无法编程。 引入数组。 #define N 5 void main ( ) { float s[N] , avg=0; int i; for (i=0;iN;i++) { scanf (%f, s[i] ); avg += s[i] ; } avg = avg/N;
文档评论(0)