《数据结构》-参数传递_第1页
《数据结构》-参数传递_第2页
《数据结构》-参数传递_第3页
《数据结构》-参数传递_第4页
《数据结构》-参数传递_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数的参数传递方式,2,函数的定义,函数是面向对象程序设计中的基本抽象单元,是对功能的抽象函数定义的语法形式类型标识符 函数名(形式参数表) 语句序列,函数的定义与使用,若无参数,写void,是被初始化的内部变量,寿命和可见性仅限于函数内部,若无返回值,写void,3,函数的定义,形式参数表 name1, name2, ., namen函数的返回值由 return 语句给出,例如:return 0无返回值的函数(void类型),不必写return语句。,函数的定义与使用,4,函数的调用,调用前先说明函数原型:在调用函数的说明部分,或程序文件开头所有函数之前,按如下形式说明: 类型标识符 被调用函数名 (含类型说明的形参表);调用形式 函数名(实参列表),函数的定义与使用,5,函数调用 当一个函数定义有形参时,在进行函数调用时,必须提供与形参个数、类型相同的实参。 在C+中,有两种参数传递机制将实参的值传递给形参:传值调用( 包含传变量地址值的传址调用 )和引用调用 ( C语言中没有 )。,1 函数的值和类型 函数调用格式: 函数名 ( 实参表 ),函数调用是一种表达式,括号可理解为函数调用运算符。函数调用表达式的值是函数的返回值,其类型是函数类型。,6,函数的返回值是在被调用函数中通过返回语句来实现的。,返回语句的两种格式: return 表达式; return;,无返回值的函数中可以有return语句,也可以没有return语句。,7,函数的参数传递机制 值调用,在函数被调用时才分配形参的存储单元。实参可以是常量、变量或表达式。实参类型必须与形参相符。传递时是传递参数值,即单向传递。,8,函数的参数传递机制 值调用举例,9,在这种机制中,形参用变量,实参用常量、变量值或表达式值。调用时,实参的值被拷贝到由相应形参名字所标识的对象中。在函数内部对形参的访问或更新都是是对这个副本的访问或更新。实参本身的值在调用前后和调用过程中都不发生变化。,10,int Multiply( int a ) a *= 2 ; cout“a=“aendl; return a;,#include void main() int b = 10; Multiply(b); cout“b=“b;,运行结果: a=20 b=10,11,例3.6 输入两 整数,交换后输出,#includevoid Swap(int a, int b);int main()int x(5), y(10);coutx=x y=yendl;Swap(x,y);coutx=x y=yendl;return 0;,函数的定义与使用,void Swap(int a, int b)int t;t=a;a=b;b=t;运行结果:x=5 y=10x=5 y=10,13,使用传址调用方式时,形参用指针,实参用地址值。调用时,将实参的地址值赋给对应的形参指针,使形参指针指向实参变量;因此,在被调用函数中可以通过改变形参指针所指向的变量值来间接改变实参值。,#include void swap( int *x, int *y ) int temp ; temp = *x ; *x = * y; *y = temp ;,函数的参数传递机制 传址调用,14,cout “x=“ *x“,” cout “y=“ *yendl;void main(_) int a(5), b(9); swap ( ,运行结果: x = 9, y = 5 a = 9, b = 5,15,函数的参数传递 引用调用,引用(引用作为形参例如: void Swap(int& a, int& b) .,函数的定义与使用,16,采用引用传递(引用调用)机制,可以在被调用函数中通过引用直接改变调用函数的实参值,它比传址调用更方便、更直接。,17,例3.7 输入两 整数,交换后输出,#includevoid Swap(int,函数的定义与使用,void Swap(int运行结果:x=5 y=10x=10 y=5,Swap(x,y);void swap(int &a,int &b)第一步:调用:将x的地址给a的地址,y的地址给b的地址。结果:a和x有相同的地址,b和y有相同的地址 a=5 b=10,第二步:a和b交换内容:t=a;a=b;b=t;结果:a=10b=5,Swap(x,y);void swap(int &a,int &b)第三步:返回:由于a地址单元的内容已经变成10,x和a有相同的地址,x的值也变成10。 同样:y也变成5。 完成了交换的功能。实际上,在这种情况下,也没有参数回传的动作。在s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论