c语言指针做函数参数问题:

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:37:08
函数定义int fun(int &a,int&b)正确吗?如果正确实参应该用什么做,是int型变量名还是地址?和函数int fun(int *a,int *b)有什么区别?
"int fun(int &a,int&b)是引用。实参是int变量名"能详细点吗?那个题是那样的。就是不能理解怎样实现将实参值改变的过程?函数为int fun(int &a,int &b){int c;c=a;a=b;a=c;}

▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
int fun(int &a,int&b)是引用是正确的。
你题目中这个函数作用应该是交换两个数。这种交换函数是相当典型的。不能够直接用值去交换,而必须用值的地址去交换才能最终转换。
是考试中常考查的。给个例子你运行看看就知道了:
#include<iostream.h>
void swap1(int a1,int b1)
{
int temp1=a1;
a1=b1;
b1=temp1;
}
void swap2(int &a2,int &b2)
{
int temp2=a2;
a2=b2;
b2=temp2;
}
main()
{
int a=8,b=5;
cout<<"初始时值分别为: a="<<a<<" b="<<b<<endl;
swap1(a,b);
cout<<"不使用地址传递后产生交换无变化: a="<<a<<' '<<"b="<<b<<endl;
swap2(a,b);
cout<<"用地址传递后产生正确的交换: a="<<a<<' '<<"b="<<b<<endl;
return 0;
}
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
---就是不能理解怎样实现将实参值改变的过程?
实际上是这样的,看上面的这个例子,swap2(a,b)函数,将实参a,b的值的地址(注意是地址)赋于&a2,&b2。此时a2,b2的在内存中占的地址和a,b在内存中占