一、函数与调用约定 二、函数的总体概念课件.ppt

一、函数与调用约定 二、函数的总体概念课件.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、函数与调用约定 二、函数的总体概念 一、函数与调用约定 将经常使用的功能组合成一个有机的整体,程序就划分 为功能相对独立的模块。这些独立的模块对应着程序的函 数。 函数是代码最重要的重用机制。函数的来源分为两种: 一、程序员编写的函数; 二、系统提供的标准库函数。 系统的库函数是预先编好的可供程序员调用的函数。调 用时需要将库函数的原型通过头文件的方式包含在主控函数 的源文件中。 例如: 通过#includemath.h,就可以使用math.h中的数学 函数如sin,cos等。 调用约定是为实现函数调用而建立的一种协议。函数定 义之后,可以在别的地方对它进行调用。在定义时用形式参 数(简称形参),调用时则替换成实际参数(简称实参)。 首先,参数的传递是指入口形参输入传递,它是一个 形实替换过程。 如果一个程序向另一个程序发送参效的规则和后者接收 参数的规则不符合,那么程序就可能因为出错而导致系统崩 溃。 其次,参数的传递也包括函数返回的数据传递。 在各种高级语言中比较流行的参数的传递方式主要为如 下两种: 1. 传值调用 (call by value) 传值是一种最简单的参数传递方法,传值首先指输入传 值,它把实参的值单方向地传递给相应的形参。对于变量、 指针等实参,被调用段无法改变实参的值,传值是一种最安 全的参数传递方法。 传值包括形参的输入传值与数据的返回传值。例如: int ifi (int x) {return x+1;} //int型的数值入口和int型的数值返回 int* pfp (int* p) {return p+2;} // int*型的数值入口和int*型的指针数值返回 输入传值过程把实参值存放在一个被调用段可以取得的 地方即形参中,每一个入口形参位于被调函数新开辟的堆栈 空间而非原来的变量中。 进入被调用段后,首先在临时的堆栈空间取出实参值, 然后象对待一个局部变量一样对形参进行处理。 在被调函数中,一切操作都针对此局部的独立的形参单 元进行。如果实参不是变量的地址,则被调用段是无法改变 实参对应的变量值的,即对原实参对应的变量无影响。 实参为指针的情况,传值也是传递指针所具有的数值不 是指针的地址,即传递另一个变量的地址给被调程序,作为 被调程序指针形参的初始值,在被调用段可以改变指针指向 的存储单元的值,不能改变原实参对应的指针的值。传值调 用传递一个不含实参地址属性信息的右值。 传值调用的特点是先计算出表达式的值,输入的时候对 于大的对象或结构变量须把其一系列具体的数据值放置在刚 开辟的堆栈空间中,堆栈空间的开销趋大。 传值返回的时候根据返回数据类型的大小系统将结果值 或通过EAX等寄存器或通过临时建立的存储单元返回给主控 程序。 C语言函数的参数传递方式只有一种就是数值传递。 2. 引用调用(call by reference) call by reference视为变量的传址或称为变量的引用 传递。指针的传值与变量的引用传递都是转送另一个变量的 地址但对应两种不同的调用约定。 引用调用包括变量和指针以及函数指针等的引用传递, 包括引用输入与引用返回。例如: int rif (int x) {return x+=1;} //int变量的引用入口和引用返回 int* rpf (int* p) {return p+=2;} //int*指针的引用入口和引用返回 引用输入传递也是用得最多的参数传递方式,它是把实 际参数的地址传递给相应的形式参数。引用调用传递一个含 实参地址属性信息的左值。其实现过程下: 在被调函数中,每一个形参都对应了一个形参单元,这 个单元用来存放相应实参的地址。 如果实参是变量则直接传递它的地址;如果实参是常数 或表达式,则应该首先计算出它的值并放入一个临时单元, 再把这个临时单元的地址传给函数。 当进入被调用函数后,对应的形参单元中存放的是实参 的固定地址,在处理数据时,针对这些形参指向的实

文档评论(0)

沃爱茜 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档