c语言指针做函数参数问题:
函数定义intfun(int&a,int&b)正确吗?如果正确实参应该用什么做,是int型变量名还是地址?和函数intfun(int*a,int*b)有什么区别?"int...
函数定义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)是引用。实参是int变量名"能详细点吗?那个题是那样的。就是不能理解怎样实现将实参值改变的过程?函数为int fun(int &a,int &b){int c;c=a;a=b;a=c;} 展开
4个回答
展开全部
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
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在内存中占的地址是一样的,所以实现了a2和b2的交换也就实现在a和b的交换。a2,b2是对a,b引用它。
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在内存中占的地址是一样的,所以实现了a2和b2的交换也就实现在a和b的交换。a2,b2是对a,b引用它。
展开全部
xiezhaohui219 正确
int x,y;
x=y=12;
int *m=&x;
int *n=&y;
int fun1(int &a,int &b){}
int fun2(int *a,int *b){}
调用:
fun1(x,y)
fun2(&x,&y)或者fun(m,n)
int x,y;
x=y=12;
int *m=&x;
int *n=&y;
int fun1(int &a,int &b){}
int fun2(int *a,int *b){}
调用:
fun1(x,y)
fun2(&x,&y)或者fun(m,n)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int fun(int &a,int&b) 不对
int fun(int *a,int *b) 是用指针接受变量,传的时候fun(&变量名,&变量名);就可以 是指针传的,这是传变量的地址
int fun(int *a,int *b) 是用指针接受变量,传的时候fun(&变量名,&变量名);就可以 是指针传的,这是传变量的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int fun(int &a,int&b)是引用。实参是int变量名
int fun(int *a,int *b)是指针
int fun(int *a,int *b)是指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询