程序中的函数应用
人们在求解一个复杂问题时,通常采用的是逐步分解、分而治之的方法,也就是把一个复杂的大问题分解成若干个比较容易求解的小问题,然后分别求解。类似地,程序员在设计一个复杂的程序时,往往也是把整个程序划分成若干个功能较为单一且相对独立的子程序,然后分别予以实现,最后再把所有的子程序像搭积木一样装配起来。
过程和函数是两类不同的子程序。一个过程是参数化计算的语句序列,一般没有返回值。函数在结构上类似于过程,但一个函数通常有一个返回值.在C,C++等语言中,过程和函数被统一为函数这一种形式。
在程序中使用函数时,需要定义函数和调用函数。每种程序设计语言都会提供关于函数定义和调用的相应规则。函数定义描述了函数做什么和怎么做,函数调用则是使用已经定义的函数。
1.函数定义
一个函数的定义通常由两部分构成:函数首部和函数体。函数首部给出了一个契约说明了如何使用一个函数;P数体则用语句描述了函数的具体功能和实现细节。函数定义的一般格式是:
返回值的类型函数名(形参表),/函数首部
{
函数体;
}
数首部说明了函数返回值的数据类型、函数的名字和函数运行时所需的参数(称为形参)及其类型。函数所实现的功能在函数体部分描述。
2.函数调用
在一个函数(称为调用函数)中需要使用另一个函数(称为被调用函数)已经实现的功能时,便以名字和参数进行调用,称为函数调用。在使用一个函数时,只要知道如何调用就可以了,并不需要关心被调用函数的内部实现。因此,调用函数需要给出被调用函数的名字、向被调用函数传递的参数(实参)以及如何处理返回值等。
函数调用的一般形式为:
函数名(实参表);
实现函数调用时,系统要作一系列的处理,包括保存现场、实参传递、控制转人被调用函数等,调用完成后需要恢复现场、传递返回值、控制转回调用函数。
表7-4是一个函数定义和函数调用的例子,其中,函数power的功能是求解实数x的k次方。
函数调用的含义如图7-7所示,其中,调用函数caller在其语句“y = power(a,4);”中调用了函数power.因此,在caller的执行过程中,执行到该函数调用时,将实参a和4的值传递给形参x和k,控制流转人函数power开始执行,遇到return p时计算返回值,power执行结束.此后,控制流再返回调用函数caller并将返回值传给y,接着执行caller中“Y=power(a,4) ;”之后的语句。
3.参数与参数传递
在程序中使用函数时,参数起着调用函数与被调用函数之间的信息传递作用。通常有两类参数:形式参数和实际参数。形式参数(Parameter,简称为形参)出现在函数定义时的函数首部,在形式上以代表着某些量的特征参数的方式出现;实际参数(Argument,简称为实参)出现在函数调用中,它们对应于形式参数的具体内容。
例如,在前面关于函数power的定义中,函数首部为“double power(double x, int k)",其中,x和k就是形参。函数调用power(3. 5,4)实现计算3. 54 , 3.5和4则是实参.函数调用power(a, m)则实现计算am, a和m是实参,需将实参变量a的值传递给形参x,实参变量m的值传递给形参k。在调用时.实参a和m必须具有确定的值。
函数的实参与形参是相对应的。实现函数调用时,实参要向形参传递值。参数传递指的是在函数调用时实参与形参的匹配动作。如果由实参向形参传递值,相应的调用就称为传优调用;如果传递的是实参的地址(或者通过引用传递),则称为引用调用。下面以实现两个整型变It交换值的函数为例,简要说明传值调用和引用调用方式下的参数传递问题,其中swapl采用的是传值调用,swap2采用的是引用调用,它们的定义和调用如表7-5所示。
在传值调用方式中,形参将取得实参的值。在这种方式下,形参与实参分别对应不同的存储单元.以函数swapl为例,在函数调用语句swapl (a, b)得到执行之前,系统还没有为形参分配存储单元,如图7-8(a)所示。函数调用语句执行时,系统为形参x,y分配存储单元,实参a和b的值分别传递给形参x和y。在函数swapl执行时,确实将x和y的值作了交换,但此时x与a无关、y与b无关,所以a和b的值并没有得到交换,如图7-8 (c)所示.实际卜,被调用函数执行结束后,形参的存储空间就被系统回收了。
在引用调用方式下,形参表示的是实参的存储位置,形参可以看成是实参之存储位置的代名词。因此,在函数swap2中,交换x与Y的值就等同于交换a与b的值,调用结束后实现了对a和b值的交换处理。
4.标准库函数
编写程序时,并不需要也不应当一切都从头开始,而应当尽可能地利用前人的成果,以提高开发的速度和质量。为此,每种程序设计语言在发布时都包含了一些随程序开发环境提供的函数库,供编程人员开发程序时调用,如C语言的标准库等。由编译程序开发商和第三方提供的函数库,实现了许多公用的或常用的功能,这些函数在准确性、高效性和可移植性方面更有保证。
存放在函数库中的函数称为库函数.库函数具有明确的功能、人口参数和返回值。
函数库以文件方式提供。例如,扩展名为lib或dll的文件通常就是某种函数库。
推荐新闻
更多行业-
百度反链增加的4大技巧
排名也是可以的那到底有没有用那就看你执行力,这个论坛有些人不怎么陌生吧...
2012-07-05 -
SEO网站优化细节问题
在网络营销模式的盛行时代,其所占据的市场份额正在不断的扩大,北京网站建...
2012-11-26 -
网站建设流程之网站整体规划
不论是正规的商业网站还是个人网站,要想把它搞得丰富多彩,吸引大量用户前...
2016-01-01 -
小型企业站该怎样做内容
基本上适用与每个行业。再回到文章的开头处,以上的四种方法完全是笔者通过...
2012-06-27 -
建设移动端网站有哪些好的方法?带你一起来了解一下
手机网站的缺失意味着一群手机用户将被错过,这对企业来说是一大损失。因此...
2020-04-24 -
网站的知识产权法律保护
网络上的信息不仅包括被上传的原有作品,而且还包括一些所谓的原创作品。无...
2014-08-06
预约专业咨询顾问沟通!
免责声明
非常感谢您访问我们的网站。在您使用本网站之前,请您仔细阅读本声明的所有条款。
1、本站部分内容来源自网络,涉及到的部分文章和图片版权属于原作者,本站转载仅供大家学习和交流,切勿用于任何商业活动。
2、本站不承担用户因使用这些资源对自己和他人造成任何形式的损失或伤害。
3、本声明未涉及的问题参见国家有关法律法规,当本声明与国家法律法规冲突时,以国家法律法规为准。
4、如果侵害了您的合法权益,请您及时与我们,我们会在第一时间删除相关内容!
联系方式:010-60259772
电子邮件:394588593@qq.com