#include <iostream>
using namespace std;
int main()
{
void swap(int *,int *);
void swap1(int,int);
void swap2(int *,int *);
void swap3(int &,int &);
int a=45,b=78;
int * pointer_1,* pointer_2;
pointer_1 = &a;
pointer_2 = &b;
cout << "before swap a=" << a << ",b=" << b << endl;
cout << "&pointer_1=" << &pointer_1 << ",&pointer_2=" << &pointer_2 << endl;
swap(pointer_1,pointer_2);
cout << "after swap a=" << a << ",b=" << b << endl;
cout << "after swap *pointer_1=" << *pointer_1 << ",*pointer_2=" << *pointer_2 << endl;
cout << "before swap1 a=" << a << ",b=" << b << endl;
cout << "&a=" << &a << ",&b=" << &b << endl;
swap1(a,b);
cout << "after swap1 a=" << a << ",b=" << b << endl;
cout << "after swap *pointer_1=" << *pointer_1 << ",*pointer_2=" << *pointer_2 << endl;
cout << "before swap2 a=" << a << ",b=" << b << endl;
cout << "&pointer_1=" << &pointer_1 << ",&pointer_2=" << &pointer_2 << endl;
swap2(pointer_1,pointer_2);
cout << "after swap2 a=" << a << ",b=" << b << endl;
cout << "after swap2 *pointer_1=" << *pointer_1 << ",*pointer_2=" << *pointer_2 << endl;
cout << "before swap3 a=" << a << ",b=" << b << endl;
cout << "&pointer_1=" << &pointer_1 << ",&pointer_2=" << &pointer_2 << endl;
swap3(a,b);
cout << "after swap3 a=" << a << ",b=" << b << endl;
cout << "after swap3 *pointer_1=" << *pointer_1 << ",*pointer_2=" << *pointer_2 << endl;
cout << "pointer_1=" << pointer_1 << ",pointer_2=" << pointer_2 << endl;
cout << "Hello world!" << endl;
return 0;
}
void swap(int *p1, int *p2)
{
int temp;
cout << "&p1=" << &p1 << ",&p2=" << &p2 << endl;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void swap1(int p1, int p2)
{
int temp;
cout << "&p1=" << &p1 << ",&p2=" << &p2 << endl;
temp = p1;
p1 = p2;
p2 = temp;
}
void swap2(int *p1, int *p2)
{
int *temp;
cout << "&p1=" << &p1 << ",&p2=" << &p2 << endl;
temp = p1;
p1 = p2;
p2 = temp;
}
void swap3(int &p1,int &p2)
{
cout << "p1=" << p1 << ",p2=" << p2 << endl;
cout << "&p1=" << &p1 << ",&p2=" << &p2 << endl;
int temp;
temp = p1;
p1 = p2;
p2 = temp;
}
在Code::Blocks上运行,并且要参照谭浩强写的C++程序设计第2版和程序员面试宝典第三版中对内存图的分析来理解。