C++定义一个函数,有2个参数,实现对实参值的交换,用指针和引用2种方式实现
展开全部
void swap1(int *a,int * b)//指针
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
void swap2(int &a,int &b)//引用
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
void swap2(int &a,int &b)//引用
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
追问
可以讲解一下吗,谢谢
追答
void swap1(int *a,int * b)//指针 参数是两个指针变量
{
int tmp;
tmp=*a; //把a指向的值赋给tmp
*a=*b; //把b指向的值赋给a指向的值
*b=tmp; //把tmp的值赋给b指向的值
//这样就达到了变换a,b指向的值的目的
}
void swap2(int &a,int &b)//引用 参数是两个整型变量的引用
{
//引用就是他本身的值,所以直接交换两个的值就行了。
int tmp;
tmp=a;
a=b;
b=tmp;
}
展开全部
#include<stdio.h>
main()
{
int a,b,c;
printf("enter two number");
scanf("%d%d",&a,&b);
c=a;
a=b;
b=c;
printf("交换后a=%d,b=%d",a,b);
}
这是引用,指针和这个差不多;
#include<stdio.h>
main()
{
int a,b,c,*pa,*pb,*pc;
pa=&a;pb=&b;pc=&c;
printf("enter two number");
scanf("%d%d",&a,&b);
pc=pa;
pa=pb;
pb=pc;
printf("pa=%d,pb=%d",*pa,*pb);
}
这是指针,求采纳
main()
{
int a,b,c;
printf("enter two number");
scanf("%d%d",&a,&b);
c=a;
a=b;
b=c;
printf("交换后a=%d,b=%d",a,b);
}
这是引用,指针和这个差不多;
#include<stdio.h>
main()
{
int a,b,c,*pa,*pb,*pc;
pa=&a;pb=&b;pc=&c;
printf("enter two number");
scanf("%d%d",&a,&b);
pc=pa;
pa=pb;
pb=pc;
printf("pa=%d,pb=%d",*pa,*pb);
}
这是指针,求采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二和第三的作用主要是为了解决等效
形状的参数中所涉及的问题,作为一个例子来说明一个简单的程序
无效MSwapa(INT A,INT B); / /这两个函数交换,b值
无效MSwapb(一和二);
(){
INT A = 2;
INT B = 3;
MSwapa(A,B);
法院<< <<“”<< B << endl;
MSwapb(A,B);
COUT < <<<“”<< B << endl;
返回0;}
无效MSwapa(INT A,INT B){
TMP =; /> = B;
B = TMP;
}
无效MSwapb(一,诠释及b){
TMP =;
= b;
B = TMP;
}
/ /结果是
虽然两个函数交换一个的B值
MSwapa(INT,INT B)参数没有被引用,所以MSwapa(INT,INT B)产生两个临时对象a和b,是您的main()函数定义一个,b的值赋给两个临时变量,MSwapa只是这两个临时的对象交换价值(INT A,INT B)
所以法院<<一个<<“”<< B << endl结果没有交换
BR /> MSapb(INT&,INT&B)与参考它直接给你在main()定义一个b值?交换这两个变量,所以法院<<了“”“< <B交换<< endl结果a,b值?
形状的参数中所涉及的问题,作为一个例子来说明一个简单的程序
无效MSwapa(INT A,INT B); / /这两个函数交换,b值
无效MSwapb(一和二);
(){
INT A = 2;
INT B = 3;
MSwapa(A,B);
法院<< <<“”<< B << endl;
MSwapb(A,B);
COUT < <<<“”<< B << endl;
返回0;}
无效MSwapa(INT A,INT B){
TMP =; /> = B;
B = TMP;
}
无效MSwapb(一,诠释及b){
TMP =;
= b;
B = TMP;
}
/ /结果是
虽然两个函数交换一个的B值
MSwapa(INT,INT B)参数没有被引用,所以MSwapa(INT,INT B)产生两个临时对象a和b,是您的main()函数定义一个,b的值赋给两个临时变量,MSwapa只是这两个临时的对象交换价值(INT A,INT B)
所以法院<<一个<<“”<< B << endl结果没有交换
BR /> MSapb(INT&,INT&B)与参考它直接给你在main()定义一个b值?交换这两个变量,所以法院<<了“”“< <B交换<< endl结果a,b值?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码如下:
void cmp(int &a, int &b)
{
int tmp = a;
a = b;
b = tmp;
}
void cmp(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
追问
提示说是 “cmp”: 本地函数定义是非法的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询