已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 只 怕 有 心 人 世 上 无 难 事 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 教学主题指针与字符串、指针与函数 教学目标 通过过本次课课的学习习,使学生掌握字符串 指针变针变 量的定义义、字符串指针变针变 量作函 数参数的用法、以及指针针与函数如何一起 运用。 教学重点 1字符串指针变针变 量和字符数组组 2字符串指针变针变 量作函数的参数 3返回值为值为 指针针的函数 教学难点 1字符串指针变针变 量和字符数组组的区别别 2指向函数的指针针的用法 教案 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 主要内容 u 指针与字符串 字符串指针变量的定义及引用 字符串指针变量作函数参数 u 指针与函数 返回值为指针的函数 指向函数的指针变量 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 字符串指针变针变 量的定义义 字符串指针变量的定义与指向字符变量的指针变量 的定义是相同的,只能按对指针变量的赋值不同来 区别。 例如 char c, *p = /* 表示p是一个指向字符变量c的指针变量 */ char *s = “C Program“; /* 表示s是一个指向字符串的指针变量, 把字符串的首地址赋给了s。 */ char string20 = “C Program“; 问:这行表示什么含义?与上一行的区别是什么? 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 字符串指针变针变 量和字符数组组 字符数组和字符串指针变量的区别 (1)存放内容 字符串指针变量用于存放字符串的首地址; 字符数组可用来存放整个字符串。 (2)赋值方式 在定义的同时进行赋值: char *pstr = “C Program “; char string20 = “C Program “; 定义完以后再赋值: char *pstr; pstr = “C Program “; char string20; string = “C Program“; 思考:哪些正确,哪些错误? 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 字符串指针变针变 量引用举举例 【例6-8】编写程序,输入一串字符,判断是否只有数字、字 母和下划线。如果是,输出“YES”,否则输出“NO”。 流程图 源程序 运行程序 (5_1) 看源程序 (5_1) 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 字符串指针变针变 量作函数参数 将一个字符串从一个函数传递到另一个函数,可以 用传地址的办法,即用字符数组名作参数或用指向 字符串的指针变量作参数。 结果:在被调用的函数中可以改变字符串的内容, 在主调函数中可以得到改变了的字符串。 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 字符串指针变针变 量作函数参数举举 例 【例6-9】编写 主函数及子函数 string_copy, 要求进行字符串 的复制,并且不 能使用strcpy库 函数。 流程图 源程序 运行程序 (5_2) 看源程序 (5_2) 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 字符数组组与数值值型数组组的区别别 数值型数组与存储字符串的字符型数组的区别 (1)存储字符串的字符型数组一般有表示结束的标 志0;而数值型数组则没有。 (2)存储字符串的字符型数组在输入和输出的时候 可以用%c进行单个处理,还可以用%s进行整体处理 ;而数值型数组只能一个一个进行输入和输出。 (3)存储字符串的字符型数组在函数之间进行参数 传递时,只需要传送数组首地址即可;而数值型数组 作为函数参数时,传送数组首地址的同时,常常还需 要传送数组元素的个数。 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 举举例 【例6-10】编写程序,完成一个学生的姓名和一组 成绩的输入和输出(假定有10门课程)。 源程序 运行程序 (5_3) 看源程序 (5_3) 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 回顾顾 问:下面定义的三个变量分别是什么变量? int (*p2)4; int *p34; 确定变量的方法 把在变量定义时使用的符号看作运算符,然后根据 运算符的优先级和结合性来判断。规则是:“从里向 外”,最先与变量名结合的那个运算符决定所定义的 变量的性质。 p2是一个指针变量; p3是一个数组。 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 指针针与函数 问:下面两行定义分别表示什么意思? int (*f1) ( ); int *f2( ); 用前面介绍过的方法来看f1和f2,可知: f1是一个指针变量,它指向的对象是一个函数,函 数的返回值类型为整型。即f1是一个指向函数的指针 变量。 f2则是一个函数,该函数的返回值类型为指向整型 的指针。即f2是一个返回值为指针的函数。 说明:第1行是变量定义。 思考:第2行是什么呢?函数定义、函数声明、函数调用? 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 返回值为值为 指针针的函数 在语言中允许一个函数的返回值是一个指针(即 地址),这种返回指针值的函数称为指针型函数。 定义指针型函数的一般形式 类型说明符 * 函数名( 形参类型说明表 ) /* 函数体 */ 返回值是指针(即 地址)的标志 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 返回值为值为 指针针的函数举举例 【例6-11】编写一程序,要求完成如下功能: 读入一行字符串和一个字符。 查找字符在串中的位置。 如果字符在串中出现,就从首次出现该字符的位置 开始打印字符串,否则打印“No match found!”。 分析 (1)用主函数完成字符串和字符的输入和输出。 (2)用函数match完成查找字符在串中的位置。若查 找成功,函数返回指向首次出现字符在串中的位置指 针,否则函数返回空指针。 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 返回值为值为 指针针的函数举举例 【例6-11】编写一程序,完成读入一行字符串和一个字符,查 找字符在串中的位置,最后输出相应的结果。 流程图 源程序 运行程序 (5_4) 看源程序 (5_4) 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 返回值为值为 指针针的函数的注意点 当函数的返回值是指针类型的时候,要特别注意返回 值的指向。 举例 运行程序 (5_5) 看源程序 (5_5) 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 指向函数的指针变针变 量 在语言中规定,一个函数的程序代码总是占用一段连续的 内存区,而函数名就是该函数所占内存区的首地址。 可以把函数代码段的首地址(或称入口地址)赋给一个指针 变量,使该指针变量指向该函数。然后通过指针变量就可以 找到并调用这个函数。我们把这种指向函数的指针变量称为 函数指针。 函数指针变量定义的一般形式 类型说明符 (*指针变量名)(形参表列); 函数返回 值类型 表示指针变量指向 一个函数 表示指针变量指向 一个函数 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 指向函数的指针变针变 量应应用举举例 【例6-12】编写一个函数operate,在调用它的时候,每次 能实现不同的功能。在主函数中输入a和b两个整型数,第一 次调用operate得到a和b中的最大值,第二次调用operate得 到最小值。 分析 函数operate可以有三个形式参数:x和y是从主函数传递 过来的两个整型数,fun是指向函数的指针,在主函数中每次 调用operate函数时以不同的函数名传递过来,就能实现不 同的功能。 源程序 运行程序 (5_6) 看源程序 (5_6) 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 指向函数的指针变针变 量注意点 通过函数指针变量调用函数的一般形式 ( *函数指针变量名 )( 实参表 ) 指向函数的指针变量不能进行算术运算,这是与 指向数组的指针变量不同的。 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 本次课总结 u 指针与字符串 字符串指针变量的定义及引用 字符串指针变量作函数参数 u 指针与函数 返回值为指针的函数 指向函数的指针变量 字符数组和字符串指针变量的区别 单向传地址方式 函数定义形式、注意返回值 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 本章小结 指针、指针变量的概念 指针变量的定义 指针变量的运算 第6章 第5次课-指针与字符串、指针与函数 C语言与数据结构 指针变量的运算 (1)取地址运算符:& (2)取内容运算符:* (3)赋值运算 把变量地址赋给指针变量 同类型指针变量之间可以相互赋值 把数组、字符串的首地址赋给指针变量 把函数入口地址(函数名)赋给指针变量 (4)加减运算 对指向数组、字符串的指针变量可以进行加减(一个 整数)运算。 对指向同一个数组的两个指针变量可以进行相减运算 。 (5)关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 货物代理装卸合同范本
- 租房中介包租合同范本
- 贸易雨鞋采购合同范本
- 2025年新能源企业数字化转型数据治理与新能源行业竞争力报告
- 2025年新能源企业数据治理与供应链管理优化报告
- 河南省开封市通许县2024-2025学年九年级上学期期中考试英语题(含答案)
- 2024~2025学年福建省福州市台江区八年级下学期期中物理试卷
- 2024~2025学年湖北省省直辖县级行政单位13校联考八年级下学期5月月考物理试卷
- 2024~2025学年河南省信阳市淮滨县八年级下学期期中考试物理试卷
- 2025年鹤壁体育面试真题及答案
- 去冰岛旅游景点
- 2025【英文合同】英文版国际租房合同模板
- 南京农业大学2017博士研究生入学考试英语试题
- 土地证补办申请书
- 曹冠玉艺术歌曲的创作特征及演唱探析
- 教育强国建设的时代意蕴与实践路径研究
- 《言语语言障碍概论》课件
- 《高尔基体溶酶体》课件
- 残疾人航空运输培训
- DB22T 1718-2012 木材生产劳动定额
- 屋顶风机安装施工方案
评论
0/150
提交评论