请高手看看这个简单程序哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/06/02 04:28:58
#include<iostream>
using namespace std;
void swap(int a,int b);
void main()
{
int x=8,y=10;
cout<<x<<" "<<y<<endl;
swap(x,y);
cout<<x<<" "<<y<<endl;

}
void swap(int a,int b)
{
int c;
c=a;
a=b;
b=c;
}
运行环境:vs2003
结果输出:
8 10
8 10

为什么两个数没有交换呢?
为什么结果不是:
8 10
10 8
为什么?

#include<iostream>
using namespace std;
void swap(int & a,int & b);
int main()
{
int x=8,y=10;
cout<<x<<" "<<y<<endl;
swap(x,y);
cout<<x<<" "<<y<<endl;

system("pause");
}
void swap(int & a,int & b)
{
int c;
c=a;
a=b;
b=c;
}
这样就行了

你用了子函数调用,传到子函数中的是数值,不是指针,你在子函数中交换了数值,但是原来的母函数中的数值不受影响,只有传指针才能避免这个问题

这个问题很经典啊,看来你的c基础不好啊。麻烦你再温习下“形参”,参数传递。。。在主函数中定义两个指针,swap参数是指针就可以实现交换。谭浩强第二版202页开始学习吧。。认真看看。。讲的很详细的。。

大哥。。。这当然不行,要用指针来做。

应该是你的那个函数 swap(int a,int b) a , b 都是形参 , 有没有 返回值, 当然没有改变原有的数的值 了, 自己看看 变量怎么定义就好啦