




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C 程序设计 最重要的专业基础课程 淮阴工学院计算机工程系 主讲教师 于长辉 6 3指针与函数 函数参数可以是指针 将变量的地址传送到函数中 例如 voidswap int pa int pb inttemp pa pa pb pb temp 调用swap函数 会影响到实参的值 例如 intx 5 y 10 swap 结果 10 5 一 指针作函数参数 6 3指针与函数 交换前 交换后 6 3指针与函数 可以看到 1 在调用函数中 是把实参的指针传送给形参 即传送 x y 这是函数参数的引用传递 2 但是 作为指针本身 仍然是函数参数的值传递的方式 因为在swap函数中创建的临时指针 在函数返回时被释放 它不能影响调用函数中的实参指针 即地址 值 6 3指针与函数 例 输入a b c 按大小顺序输出 voidswap int pt1 int pt2 inttemp temp pt1 pt1 pt2 pt2 temp voidexchange int q1 int q2 int q3 if q1 q2 swap q1 q2 if q1 q3 swap q1 q3 if q2 q3 swap q2 q3 voidmain inta b c p1 p2 p3 cin a b c p1 练习一 用指针与数组作为函数参数 按下面四种情况对数组floata 10 进行降序排序 1 函数的实参为数组名 形参为数组 2 函数的实参为数组名 形参为指针变量 3 函数的实参为指针变量 形参为数组 4 函数的实参为指针变量 形参为指针变量 6 3指针与函数 返回指针值的函数 即函数返回值为指针类型的函数 定义格式 其中 说明函数返回一个指针 而该指针所指向数据类型由指定 注意 函数体中必须返回变量地址或指针变量 调用函数值只能赋给指针变量 二 指针作函数返回值 指针函数 6 3指针与函数 例 输入两个字符串 拼接后输出 char stringcat char p1 char p2 char p p1 将目标串首地址赋给指针变量pwhile p1 指针p1移到s1的串尾p1 while p1 p2 将源串s2中的字符依次复制到目标串s1中returnp 返回指向目标串首地址的指针p 6 3指针与函数 voidmain chars1 200 s2 100 cout 输入第一个字符串 cin getline s1 100 cout 输入第二个字符串 cin getline s2 100 cout 拼接后的字符串 cout stringcat s1 s2 endl 结果 输入第一个字符串 ABCD输入第二个字符串 EFGH拼接后的字符串 ABCDEFGH 练习二 从字符串中删除子字符串 char replace char source char old inti j k loc 1 for i 0 source i 6 3指针与函数 所谓函数指针 即函数的入口地址 格式 其中 表示一个指针变量 表示一个函数 两者结合表示该变量是函数指针变量 例如 float pf floatx 定义了一个名为pf的函数指针变量 三 指向函数的指针 函数指针 6 3指针与函数 函数指针变量的赋值 函数名赋给函数指针变量 例如 float pf float 定义名为pf函数指针变量floatf float 定义名为f的实型函数pf f 将函数f 的入口地址赋给函数指针变量pf注意 只能将与函数指针变量具有同类型 同参数的函数名赋给函数指针变量 对函数指针变量进行赋值后 可用该指针变量调用函数 调用格式 或 6 3指针与函数 例 编写求一维数组元素最小值 平均值的函数 floatave float p intn floatsum 0 for inti 0 i n i sum p returnsum n floatmin float p intn floatmin p for inti 0 i n i if p min min p p returnmin 6 3指针与函数 voidmain floata 1 2 3 4 5 float pf float int 定义函数指针变量pf ave 将函数ave的入口地址赋给pfcout ave pf a 5 endl pf min 将函数min的入口地址赋给pfcout min pf a 5 endl C 中的函数指针变量在同一程序中求不同函数运算结果时特别有效 练习三 用梯形法求下列定积分的值 练习三 分析 由高等数学可知 的定积分值等于由曲线y f x 直线x a x b y 0等所围曲边梯形的面积s 如下图所示 练习三 将梯形分成n个小曲边梯形 s0 s1 s2 sn 1每个曲边梯形的高均为h b a n 用梯形近似曲边梯形后 各曲边梯形的面积近似为 s0 y0 y1 h 2 s1 y1 y2 h 2 s2 y2 y3 h 2 sn 1 yn 1 yn h 2所以 S的值可由下式求得 S s0 s1 s2 sn 1 y0 y1 y2 yn 1 2 yn h 2 f x0 f xn 2 f x1 f x2 f xn 1 h 练习三 x0 a xn b xi a i h 用梯形法求定积分面积的公式为 其中 a b分别为积分的下 上限 n为积分区间的分隔数 h b a n h为积分步长 f x 为被积函数 练习三 求定积分的通用函数integral floatintegral float f float floata floatb intn floaty h inti y f a f b 2 h b a n for i 1 i n i y f a i h return y h 四个形参 f 指向被积函数的函数指针 a b 变量积分的下 上限 N 积分区间的分隔数 练习三 floatf1 floatx return 1 x floatf2 floatx return x 1 x x floatf3 floatx return x x x 1 cos x x x 练习三 voidmain cout s1 integral f1 1 4 1000 endl cout s2 integral f2 0 1 1000 endl cout s3 integral f3 1 3 1000 endl 输出 s1 10 5s2 0 346574s3 2 44641 练习三 讨论 在上述程序中 首先定义了三个被积函数f1 x f2 x f3 x 在积分函数integral 中用函数指针变量f 积分下限a 上限b 等分数n作为函数形参 在主函数中调用积分函数integral f1 1 4 1000 时 将实参f1的入口地址传送给函数指针变量f 将实参1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 豫剧花木兰课件
- 2025年度数据中心内部设备安装合同协议
- 2025版汽车维修厂维修车间维修技师劳动合同范本
- 2025年度个人信用贷款担保及审核合同
- 2025版跨国企业外教引进与海外员工语言提升服务合同
- 2025年车辆抵押借款合同关键条款分析
- 2025代持股权转让与公司战略调整合作协议
- 2025大型设备运输合同范本
- 2025年版云南省劳动合同范本下载
- 红绿灯课件教学课件
- 加油、加气、充电综合站项目可行性研究报告
- 2025保密协议范本:物流行业货物信息保密
- 塔机拆卸合同范本
- 2024-2025学年广东省深圳市南山区四年级(下)期末数学试卷
- 《煤矿安全规程(2025版)》知识培训
- 2025秋数学(新)人教五年级(上)第1课时 小数乘整数
- 半导体行业面试问题及答案解析
- 《数字技术应用基础模块》技工中职全套教学课件
- 房屋拆除专项施工方案(3篇)
- AutoCAD电气工程制图 课件 项目1 低压配电柜的绘制与识图
- 2025至2030年中国绿色船舶行业发展前景预测及投资方向研究报告
评论
0/150
提交评论