#include<iostream> using namespace std; void swap(int &a,int &b) { // cout<<"citation"<<endl; int t=a; a=b; b=t; } /* void swap(int *a,int *b) { cout<<a<<"\t"<<b<<endl<<endl; cout<<"address"<<endl; cout<<*a<<"\t"<<*b<<endl; int *t = a; cout<<t<<endl; a=b; cout<<a<<endl; b=t; cout<<b<<endl; cout<<*a<<"\t"<<*b<<endl; } */ void swap(int *a,int *b) { // cout<<"address"<<endl; int t = *a; *a = *b; *b = t; } int main() { int a=10; int b=20; swap(a,b); cout<<a<<"\t"<<b<<endl<<endl; //cout<<&a<<"\t"<<&b<<endl; swap(&a,&b); cout<<a<<"\t"<<b<<endl; //cout<<&a<<"\t"<<&b<<endl; return 0; }
注释掉的swap函数,在函数体里面继续使用指针操作,函数的参数是指针,交换这两个指针,但是指针的内容是没有变化的,
所以原来的变量a,b的内容保存不变,变化的只是为了给swap函数传递参数,而是用的临时变量。