swap(&a,&b)和swap(a,b)在以下题目中有什么区别?
发布网友
发布时间:2022-05-01 21:46
我来回答
共4个回答
热心网友
时间:2022-06-23 23:25
一楼说的不对
你的程序我试过了 在这里
cin>>a>>b;
swap(a,b); 这个是对的 swap(&a,&b) 是错的
因为
void swap(int *a,int *b)
是指针 所以需要传值
而传地址的话 相当于 *a *b 指向地址 然后把*a *b 指向的地址值交换了一下
所以后面输出 数值不变
当传地址时 结果如下
3 4
0012FF7C 0012FF78
3 4
Press any key to continue
#include<iostream>
using namespace std;
void swap(int *a,int *b)
{
int *temp;
cout<<a<<" "<<b<<endl;
temp=a;
a=b;
b=temp;
}
void main()
{
int a,b;
cin>>a>>b;
swap(&a,&b);
cout<<a<<" "<<b<<endl;
}
有疑问请追问 满意记得采纳
在传地址时 是调用的你写的swap
在传值时 是调用的系统的 inline 函数 swap
传值时你把你写的swap 注释掉也不影响
传值时单步调试时不进你写的swap
热心网友
时间:2022-06-23 23:26
swap(a,b)是将ab的值传递,而swap(&a,&b)是传递的地址
热心网友
时间:2022-06-23 23:26
1,首先你的swap函数是写错了的!!!变量前面都要加*才能达到交换的目地。
void swap(int *a,int *b)
{
int *temp;
*temp=*a;
*a=*b;
*b=*temp;
}
2,因为swap的参数是(int*a, int*b),所以传参时要传地址,即swap(&a, &b); &a即取a变量的地址。
swap(a,b)是错误的,编译不通过!
热心网友
时间:2022-06-23 23:27
你程序有问题。我帮你改了:
#include<iostream>
using namespace std;
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void main()
{
int a,b;
cin>>a>>b;
swap(&a,&b);
cout<<a<<" "<<b<<endl;
}
由于你定义swap函数的时候里面的参数是指针型,所以你在传实参的时候要用变量的地址&a,&b