交换两个元素的值
交换两个元素的值,有传指针和传引用两种方式,这里需要注意的是引用一旦定义必须赋值,一旦赋值不能更改,对象a的引用就是a的别名(alias)。
(1)int &a;//a是int类型的引用
(2)int *a;//a是int类型的指针
(3)int *&a;//a是int*类型的引用,也就是a是指针的引用
可以用下面示意图解释

第一种交换方式,传递引用,swap1(int &x, int &y);第二种方式,传递指针swap2(int *x, int *y),第三种方式传递指针引用swap3(int*(&x), int*(&y))。分别如下所示



可以看到第一、二种方式交换的是数值,第三种方式交换的是指针。
附代码
1 #include
2
3
4 void swap1(int &x, int &y)
5 {
6 int temp = x;
7 x = y;
8 y = temp;
9 }
10
11 void swap2(int *x, int *y)
12 {
13 int temp;
14 temp = *x;
15 *x = *y;
16 *y = temp;
17 }
18
19 void swap3(int*(&x), int*(&y))
20 {
21 int *temp;
22 temp = x;
23 x = y;
24 y = temp;
25 }
26
27 int main()