ch13-三论函数.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十三章 三论函数___几个较深入的问题 函数指针 函数做参数 函数副作用 形式参数作实在参数 可变长度数组 本章小结 函数指针 在数组与指针一节中曾指出数组名表示数组首地址,若将数组名赋值给一个类型兼容的指针变量,那么这个指针变量也指向这个数组。同样函数名也具有上述相同的特性,即 函数名表示函数控制块的首地址,函数控制块中包括函数入口地址等信息。 如果用一个指针变量来标识函数控制块的首地址,则称这个指针变量为指向函数的指针变量,简称指向函数的指针、函数指针。函数指针声明形式是: 类型符 (*标识符)(形式参数表); 其中 标识符是被声明的“指向函数的指针变量”名; 类型符给出函数指针变量所指向函数的类型信息; 形式参数表给出函数指针变量所指向的函数的形式参数信息。 可以把函数名赋值给一个函数指针变量,然后通过函数指针变量调用函数。形式是: 函数指针变量 = 函数名; 这个赋值要求“函数指针的特性与函数名的特性一致”,这种一致性体现在 它们的返回类型相同; 它们的参数个数相同; 对应位置上,每个形式参数的类型相同。 例13-3 对给定整数数组排序,递增 或递减按给定参数决定 bool ascending(int a, int b){ return ab; } bool descending(int a, int b){ return ab; } void swap(int *a , int *b ) { int temp; temp = *a; *a = *b; *b = temp; } 函数作参数 一个函数可以调用其它函数,这是大家熟知的事实。有时遇到这种情况,在一个函数P内,要调用另一个函数,但到底调用哪一个函数要到执行函数P才能确定。 例13-4用梯形公式计算并打印定积分 解:最好能有一个计算定积分的函数 integrate 能够计算任意函数 f 在区间 [a,b] 上的的定积分,然后 分别以函数 等为参数,调用函数 integrate。 例13-5 用指向函数的指针作函数参数,实现例13-3同样的问题: 编一个排序函数,该函数对给定整数数组既可以按递增排序也可以按递或递减排序 例13-6 编程序,以0.1为间隔,计算区间 [0,1] 内所有正弦函数和所有余弦函数之和 double sum( double(*func)(double) /* 参数func是函数指针 */ , double d1, double d2) { double dt=0.0 ,d ; for( d=d1; dd2; d+=0.1) dt += (*func)(d); /* 用函数指针调用函数 */ return dt; } 函数副作用 所谓函数副作用是指,当调用函数时,被调用函数除了返回函数值之外,还对主调用函数产生附加的影响。例如,调用函数时在被调用函数内部 修改全局量的值; 修改主调用函数中声明的变量的值(一般通过指针参数实现)。 函数副作用会给程序设计带来不必要的麻烦,给程序带来十分难以查找的错误,并且降低程序的可读性。 第三章介绍表达式值的计算时曾经举过一个例子,由于双目运算的两个运算分量的计算次序不同,而带来运算结果不同,就是由函数副作用引起的。 对函数副作用的看法与对GOTO语句的看法一样,在程序设计语言界一直有分歧,有人主张保留,有人主张取消。我们认为,可以保留函数副作用,但是应该限制程序员尽量不要使用函数副作用。由于函数副作用的影响: 会使双目运算的结果依赖于两个运算分量的计算次序; 还可能使某些在数学上明显成立的事实,在程序中就不一定成立。 该函数在计算表达式 z * f(z,e) 时,将产生与第三章讲述过的例子相同的问题,表达式的值依赖于运算分量的计算次序; 即使计算次序固定,也同样会产生与上述相同的问题,使 z * f(z,e) 不等于 f(z,e) * z 形式参数作实在参数 一个标识符只要在作用域内就可以随意使用,形式参数标识符在作用域内当然可以用来作实在参数。下述程序片断是合法的。 【例13-7】形式参数作实在参数 参数结合顺序 C 没有对调用函数时的参数结合顺序作规定,甚至没

文档评论(0)

飞扬的岁月 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档