当前位置:文档之家› 函数的参数传递几种不同情况的比较

函数的参数传递几种不同情况的比较


在函数内,通过指针去操作和修改实参变量的值。函数执行
完成后,实参变量的值自动被修改。
形参变量为指针变量,仅开辟4个字节的空间存放指针的值
(即实参变量的地址)。 注意,*只有在定义是表示指针,在其他时候表示取值。 如: int *p = NULL, a[10]={1,2,3}; p = a; 操作:*p = 10; //此处的*表示取指针指向内存单元的值。
形参与实参类型相同,一一对应。 形参必须要定义类型,因为在定义被调函数时, 不知道具体要操作什么数,而定义的是要操作什么 类型的数。
7
二、有参函数
函数参数的类型:入口参数、出口参数、入口 出口参数。 函数参数传递的方式: 1、值传递(入口参数,一般通过返回值传回计算结果) 2、引用传递(入口兼出口,形参为实参变量的别名) 3、指针传递(入口兼出口,形参为实参变量的地址)
函数参数传递
——几种不同情况的比较总结
1
为什么要使用函数?
1、避免重复的编程。 2、使程序更加模块化,便于阅读、修改。
所编写的函数应尽量少与主调函数发生 联系,这样便于移植。
参数(多个) 函数值(唯一)
函数体
2
函Байду номын сангаас定义的一般形式 一、无参函数 主调函数并不将数据传给被调函数。
无参函数主要用于完成某一操作。
值将相应的发生改变。 因此,可以通过引用来实现变量值的修改。 好处:函数调用时,形参并不占用新的内存空间,空间复杂 度降低; 注意:实参变量的值会因为形参变量值的修改而修改。
void change(int &x, int &y)//x,y是实参a,b的别名 { int t; t=x; x=y; y=z; }
4
输出: * * * * * * * * * * * How do you do! ***********
5
二、有参函数 主调函数和被调函数之间有数据传递。数据
传递的手段有:
1、函数返回值传递
2、全局变量
3、参数传递 类型说明 函数名(形式参数列表说明 ) { 函数体 }
函数参数和函数的值
形参是被调函数中的变量;实参是主调函数赋给 被调函数的特定值。实参可以是常量、变量或复杂 的表达式,不管是哪种情况,在调用时实参必须是 一个确定的值。
输入a, b两个整数,按大小输出这两个数。
swap(int *p1, int *p2) { int t; t=*p1; *p1=*p2; *p2=t; } point1 &a a=100
a 100 10
void main(void) &a { int *point1, *point2, a,b; p1 cin>>a>>b; point2 point1=&a; point2=&b; &b if (a<b) swap (point1, point2); &b cout<<“a=“<<a<<“,b=”<<b<<endl; p2 cout<<*point1<<“,”<<*point2<<endl; }
在引用变量定义以外的地方出现的&符号,一律表 示地址。 如 int a=10, *p = NULL; 12 p = &a;
2.2 引用传递
函数的参数既是入口参数,也是出口参数,在函数调用时, 形参是实参的别名,实际上是同一个变量,占用同一块内存空间。
换句话说,在函数内,修改了形参的值,主调函数的实参的
调用函数 实际参数
被调函数的参数 x,y,计算后得到 函数值z返回
cout<<“The max is”<< c<<endl;
10
int max (int x,int y) { int z; z=(x>y)? x : y ; return z; } void main (void )
x 2
y 3
z 3
参数(多个) 函数值(唯一)
函数体 类型说明 函数名(void) { 函数体 }
不传递参数
3
void main(void ) 两个被调函数 调用函数 { printstar ( ); 主要用于完成 调用函数 print_message ( ); 打印操作。 调用函数 printstar( ); } 函数类型 函数名 函数体 void printstar (void ) { cout<<“* * * * * * * * * * *\n”; } void print_message (void) { cout<<“ How do you do! \n”; }
void main(void)
{ int a=3,b=5; change(a,b); //实参为变量 cout<<a<<‘\t’<<b<<endl; } a x 3 5 b y t 3 5 3
输出: 5
3
14
2.3 指针传递
函数的参数既是入口参数,也是出口参数,在函数调用时, 形参是实参的地址,形参指向实参变量所在的内存空间首地址。
8
2.1 值传递 函数的参数为入口参数,在函数调用时,实参 换句话说,在函数内,修改了形参的值,主调 因此,一般通过函数返回值的方式返回所要的
将值传递给形参,实参与形参占用不同的内存空间。
函数的实参的值不发生任何改变。
计算结果。
形参列表说明 函数类型
int max (int x,int y) 函数名 { int z; 函数体 z=(x>y)? x : y ; 函数值 return z; } 主调函数 void main (void ) 将实际值a,b传给 { int a,b,c; cin>>a>>b; c=max (a , b) ; }
t 10 b 100 10 b=10 输出:a=100,b=10 100,10
16
{ int a,b,c;
cin>>a>>b;
2 a 3 b 3 c
c=max (a , b) ; }
cout<<“The max is”<< c<<endl;
11
2.2 引用传递
对变量起另外一个名字 (外号),这个名字称 为该变量的引用。 <类型> &<引用变量名> = <原变量名>; 其中原变量名必须是一个已定义过的变量。 如: int max ; int &refmax=max;
相关主题