第18、19讲 项目1体会函数参数传递
2015-01-19 13:09
232 查看
#include <iostream> using namespace std; void fun1(int &x,int &y); void fun2(int *x,int *y); int main() { int a,b; a=11; b=22; fun2(&a,&b);//取a,b的地址 cout<<"a="<<a<<" "<<"b="<<b<<endl; fun1(a,b); cout<<"a="<<a<<" "<<"b="<<b<<endl; return 0; } //利用引用传值实现值的交换 void fun1(int &x,int &y) { int t; t=x; x=y; y=t; } // void fun2(int *x,int *y)//x,y是指针变量 { int *t;//t是指针变量 t=x; x=y; y=t; }
这是作业中的代码,其中函数fun1我根据自己的理解添加了注释,fun2的运行结果是不能实现交换,我对此不理解,于是将它单独写了出来。
#include <iostream>
using namespace std;
void s(int *x,int *y)
{
int *t;
t=x;
x=y;
y=t;
}
int main()
{
int i=3,j=5;
s(&i,&j);
cout<<i<<" "<<j;
return 0;
}
主函数调用s时,实参是i,j的地址,在void函数中进行了形参地址的交换,但实参的地址并没有改变,因此不能实现交换。(我对这个并不确定)
#include<iostream>
using namespace std;
void s(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int main()
{
int i=3,j=5;
s(&i,&j);
cout<<i<<" "<<j;
return 0;
}
这是利用指针在函数中实现交换的标准形式,从中可以看到,交换的是对应存储空间中存储的值,因此在输出是输出的仍是那个存储空间里存储的值,于是实现交换,而这也解释了,上一个函数并不能通过交换地址实现利用函数交换值的功能。
相关文章推荐
- 17项目一:体会函数参数传递
- 第十七周-(项目一(1))体会函数参数传递。
- 第十七周项目一任务2.2—体会函数参数传递
- 第17周项目1:体会函数参数传递(1)
- 17周---项目1-体会函数参数传递---用引用作为形参
- 第十七周上机任务-项目1(3)体会函数参数传递
- 17周项目一:体会函数参数传递。
- 第十七周上机任务项目1-体会函数参数传递1
- 17周项目一:体会函数参数传递(二)。
- 第十七周上机任务项目1-体会函数参数传递3
- 17周---项目1-体会函数参数传递(2)
- 17周---项目1-体会函数参数传递----传递变量的地址
- 第十七周-项目1-1-体会函数参数传递
- 项目1-体会函数参数传递.
- 第十七周上机实践项目——体会函数参数传递(传地址值)
- 项目1-体会函数参数传递.第二部分
- 17周---项目1-体会函数参数传递---变量的交换
- 17周项目一:体会函数参数传递(三)。
- 第十七周项目1 体会函数参数传递(2)
- 第17周项目1 体会函数参数传递