错误方法一: 基本上,想到两个数交换 就会使用: #include<iostream></iostream> using namespace std; int swap(int a,int b){ int t=a; a=b; b=t; } int main(){ cout<<swap(1,2)<<endl; } 结果是错的: 解析: 正确方法2: 采用指针 #include<iostream></iostream> using namespace std; //因为在swap函数里面 x,y 没有作用域 //*a *b 就延伸了这个作用域到了 x,y int swap(int *a,int *b){ int t=*a;//*a指向的就是x 他就是x *a=*b; *b=t; } int main(){ int x,y; cout<<"input 2 num:"<<endl; cin>>x>>y; swap(&x,&y); cout<<x<<" "<<y<<endl; } 陷阱3: int swap(int *a,int *b){ int *t=*a; *a=*b; *b=*t } 这种写法是错误的! 正确的改写: 写法4: 引用类型: