C++程序设计:参数传递

上传人:cn****1 文档编号:569468363 上传时间:2024-07-29 格式:PPT 页数:22 大小:110KB
返回 下载 相关 举报
C++程序设计:参数传递_第1页
第1页 / 共22页
C++程序设计:参数传递_第2页
第2页 / 共22页
C++程序设计:参数传递_第3页
第3页 / 共22页
C++程序设计:参数传递_第4页
第4页 / 共22页
C++程序设计:参数传递_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《C++程序设计:参数传递》由会员分享,可在线阅读,更多相关《C++程序设计:参数传递(22页珍藏版)》请在金锄头文库上搜索。

1、函数的参数传递方式函数的参数传递方式函数的定义函数的定义l函数是面向对象程序设计中的基本抽象函数是面向对象程序设计中的基本抽象单元,是对功能的抽象单元,是对功能的抽象l函数定义的语法形式函数定义的语法形式类型标识符 函数名(形式参数表) 语句序列函数的定义与使用若无参数,写void是被初始化的内部变量,寿命和可见性仅限于函数内部若无返回值,写void2函数的定义函数的定义l形式参数表形式参数表 name1, name2, ., namenl函数的返回值函数的返回值由 return 语句给出,例如:return 0无返回值的函数(void类型),不必写return语句。函数的定义与使用3函数的调

2、用函数的调用l调用前先说明函数原型:调用前先说明函数原型:在调用函数的说明部分,或程序文件开头所有函数之前,按如下形式说明: 类型标识符 被调用函数名 (含类型说明的形参表);l调用形式调用形式 函数名(实参列表)函数的定义与使用4函数调用函数调用 当一个函数定义有形参时,在进行函数调用时,必须当一个函数定义有形参时,在进行函数调用时,必须提供与形参个数、类型相同的实参。提供与形参个数、类型相同的实参。 在在C+中,有两种参数传递机制将实参的值传递给形中,有两种参数传递机制将实参的值传递给形参:参:传值调用传值调用( 包含传变量地址值的包含传变量地址值的传址调用传址调用 )和和引用调引用调用用

3、 ( C语言中没有语言中没有 )。1 函数的值和类型函数的值和类型 函数调用格式:函数调用格式: 函数名函数名 ( 实参表实参表 ) 函数调用是一种表达式,括号可理解为函数调函数调用是一种表达式,括号可理解为函数调用运算符。函数调用表达式的值是函数的返回值,用运算符。函数调用表达式的值是函数的返回值,其类型是函数类型。其类型是函数类型。5函数的返回值是在被调用函数中通过返回语句来实现的。函数的返回值是在被调用函数中通过返回语句来实现的。返回语句的两种格式:返回语句的两种格式: return 表达式;表达式; return; 无返回值的函数中可以有无返回值的函数中可以有return语句,也可以没

4、语句,也可以没有有return语句。语句。6函数的参数传递机制函数的参数传递机制 值调用值调用l在函数被调用时才分配形参的存储在函数被调用时才分配形参的存储单元。单元。l实参可以是常量、变量或表达式。实参可以是常量、变量或表达式。l实参类型必须与形参相符。实参类型必须与形参相符。l传递时是传递参数值,即单向传递。传递时是传递参数值,即单向传递。7函数的参数传递机制函数的参数传递机制 值调用举例值调用举例XN被调函数:被调函数:主调函数:主调函数:3 2.5AD = power(A,3) 2.53double power(double X, int N)8在这种机制中,在这种机制中,形参用变量,

5、实参用常量、形参用变量,实参用常量、变量值或表达式值变量值或表达式值。调用时,实参的值被。调用时,实参的值被拷拷贝贝到由相应形参名字所标识的对象中。在函到由相应形参名字所标识的对象中。在函数内部对形参的访问或更新都是是对这个数内部对形参的访问或更新都是是对这个副副本本的访问或更新。的访问或更新。实参本身的值在调用前后实参本身的值在调用前后和调用过程中都不发生变化。和调用过程中都不发生变化。9int Multiply( int a ) a *= 2 ; cout“a=“aendl; return a; #include void main() int b = 10; Multiply(b); c

6、out“b=“b;运行结果:运行结果: a=20 b=1010例例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;函数的定义与使用11void Swap(int a, int b)int t;t=a;a=b;b=t;运行结果运行结果:x=5 y=10x=5 y=1012使用传址调用方式时,使用传址调用方式时,形参用指针,实参用地址值形参用指针,实参用地址值。调用时,。调用时

7、,将实参的地址值赋给对应的形参指针,使形参指针指向实参变将实参的地址值赋给对应的形参指针,使形参指针指向实参变量;因此,在被调用函数中可以量;因此,在被调用函数中可以通过改变形参指针所指向的变通过改变形参指针所指向的变量值来间接改变实参值量值来间接改变实参值。#include void swap( int *x, int *y ) int temp ; temp = *x ; *x = * y; *y = temp ;函数的参数传递机制函数的参数传递机制 传址调用传址调用13 cout “x=“ *x“,” cout “y=“ *yendl;void main(_) int a(5), b(9

8、); swap ( &a, &b ); cout “a=“ a“,” cout “b=“ bendl;运行结果:运行结果: x = 9, y = 5 a = 9, b = 514函数的参数传递函数的参数传递 引用调用引用调用l引用引用(&)标识符的别名,例如:int i,j;int &ri=i; /建立一个int型的引用ri,即ri的 /地址就等于i的地址j=10;ri=j;/相当于 i=j;l引用作为形参引用作为形参例如: void Swap(int& a, int& b) .函数的定义与使用15采用引用传递(引用调用)机制,可以采用引用传递(引用调用)机制,可以在被调用函数中通过引用直接改

9、变调用在被调用函数中通过引用直接改变调用函数的实参值,它比传址调用更方便、函数的实参值,它比传址调用更方便、更直接。更直接。16例例3.7 输入两输入两 整数,交换后输出整数,交换后输出#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;函数的定义与使用17void Swap(int& a, int& b)int t;t=a;a=b;b=t;运行结果运行结果:x=5 y=10x=10 y=518Swap(x,y);void s

10、wap(int &a,int &b)第一步:调用:将x的地址给a的地址,y的地址给b的地址。结果:a和x有相同的地址,b和y有相同的地址 a=5 b=10 x xy y 5 10a ab b19第二步:a和b交换内容:t=a;a=b;b=t;结果:a=10b=5x xy y 10 5a ab b20Swap(x,y);void swap(int &a,int &b)第三步:返回:由于a地址单元的内容已经变成10,x和a有相同的地址,x的值也变成10。 同样:y也变成5。 完成了交换的功能。实际上,在这种情况下,也没有参数回传的动作。在swap中,x、y的值已经更换。x xy y 10 5a ab b21传址传址调用调用定义函数void swap(int *a,int *b)调用函数swap(&x,&y);引用调用引用调用定义函数void swap(int &a,int &b)调用函数swap(x,y);变量定义 int x=5, y=10;22

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号