交换两个元素的值(一)

2014-03-10 12:53:05 · 作者: · 浏览: 258

  交换两个元素的值

  交换两个元素的值,有传指针和传引用两种方式,这里需要注意的是引用一旦定义必须赋值,一旦赋值不能更改,对象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()