交换 x与y的值,如x = 1,y=3,希望通过一个函数使x = 3, y=1。
void swap_1(int a, int b)
{
int c = a;
a = b;
b = c;
}
void swap_2(int *a, int *b)
{
int c = *a;
*a = *b;
*b = c;
}
void swap_3(int &a, int &b)
{
int c = a;
a = b;
b = c;
}
使用swap_1(x, y)并不能交换x , y的值。
swap_2(&x, &y)可以交换,其中函数void swap_2(int *a, int *b)定义了a是一个指针变量,所以使用时应 用&x来获得x的地址(指针),函数体交换值的部分*a = *b 则是通过 * 指针 获得指针所指向的值。
swap_3(x, y)可以交换,调用该函数时,相当于 int &a = x, int &b = y, 因为a是x的引用(同一变量两个名字),所以对a的任何改变即对x的任何改变。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在什么时候使用常引用 (const int &a = x) ?
使用引用来传递参量,但又不希望在其值在函数中发生改变。
int x = 10;
const int &a = x;
x = 20; // OK
a = 30;// Error ,const类型