c++交换值问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 03:43:49
#include <iostream>
using namespace std;
void swap(int,int);
int main()
{
int x=3,y=4;
cout<<"before call:";
cout<<"x="<<x<<" y="<<y<<endl;
swap(x,y);
cout<<"after call:";
cout<<"x="<<x<<" y="<<y<<endl;
return 0;
}
void swap(int a,int b)
{
int t;
t=a;
a=b;
b=t;
cout<<"a="<<a<<" b="<<b<<endl;
}
为什么x,y的值没有互换呢

int x=3,y=4;
改为
static int x=3,y=4;

void swap(int & a,int & b)
{
int t;
t=a;
a=b;
b=t;
cout<<"a="<<a<<" b="<<b<<endl;
}
改成引用
因为你原来那样调用,改变的只是实参的值,而实参不是原来的变量。
用引用就可以了。

自变量都是有作用域的。
超过作用域当然不可以的拉