swap(&a,&b)和swap(a,b)在以下题目中有什么区别?
#include<iostream>usingnamespacestd;voidswap(int*a,int*b){int*temp;temp=a;a=b;b=temp;...
#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;
} 展开
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;
} 展开
4个回答
展开全部
一楼说的不对
你的程序我试过了 在这里
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
你的程序我试过了 在这里
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
展开全部
swap(a,b)是将ab的值传递,而swap(&a,&b)是传递的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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)是错误的,编译不通过!
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)是错误的,编译不通过!
更多追问追答
追问
可以通过啊,swap(a,b);可以输出交换后的知,但swap(&a, &b)这输出后没变化???
不信你试试.
追答
hello.c: 在函数‘main’中:
hello.c:15: 警告:传递‘swap’的第 1 个参数时将整数赋给指针,未作类型转换
hello.c:4: 附注:需要类型‘int *’,但实参的类型为‘int’
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你程序有问题。我帮你改了:
#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
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询