您的位置:首页 > 理论基础 > 数据结构算法

第2周SHH数据结构—【项目1 - C/C++语言中函数参数传递的三种方式】

2015-09-07 16:59 369 查看

(1)值传递

#include<stdio.h>
void myswap(int,int);
int main()
{
int a, b;
printf("请输入待交换的两个整数:");
scanf("%d %d", &a, &b);
myswap(a,b);  //分三个程序,分别写上调用myswap的合适形式
printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
return 0;
}
//(1)传值
void myswap(int x, int y)
{
int t;
t=x;
x=y;
y=t;
}<img src="https://img-blog.csdn.net/20150911084806259?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
结论:在学习了一年C++后很明显可以看出来这个程序不能实现,调用函数本身不对实参进行操作,只改变形参,因此实参的值不受影响。

(2)地址传递

#include<stdio.h>
void myswap(int *,int *);
int main()
{
int a, b;
printf("请输入待交换的两个整数:");
scanf("%d %d", &a, &b);
myswap(&a,&b);
printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
return 0;
}
//(2)传地址
void myswap(int *p1, int *p2)
{
int  t;
t=*p1;
*p1=*p2;
*p2=t;
}




结论:从程序可以看出,该程序是把实参的地址赋给形参,最后实现实参和形参的转换。

(3.)引用传递

#include<stdio.h>

void myswap(int &,int &);

int main()

{

int a, b;

printf("请输入待交换的两个整数:");

scanf("%d %d", &a, &b);

myswap(a,b);

printf("调用交换函数后的结果是:%d 和 %d\n", a, b);

return 0;

}

//(3)引用作形参

void myswap(int &x, int &y)

{

int t;

t=x;

x=y;

y=t;

}




结论:由运行结果看,进行了交换。如果以引用为参数,则既可以使得对形参的任何操作都能改变相应的数据,又使得函数调用显得方便、自然。引用传递方式是在函数定义时在形参前面加上引用运算符“&”。

知识点总结:

此程序考察了我们对这3种传递方式的理解,掌握它们有助于我们以后的学习。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: