指针和引用
指针和引用的区别和指针传递与引用传递
指针传递
如果指针作为函数的参数,当引用该函数时,我们传入变量x和变量y的地址。
void swap1(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int x = 6;
int y = 9;
swap1(&x, &y); // x = 9, y = 6
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
引用传递
int &a = x
代表 a
是 x
的引用,即a是x的一个别名; int &b = y
代表 b
是 y
的引用,即b是y的一个别名。通俗地来说a和b的本质就是x和y。修改a和b的值会修改x和y的值。
void swap2(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int x = 6;
int y = 9;
swap2(x, y); // x = 9, y = 6;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
拓展:值传递
如果传入函数的参数既不是指针也不是引用,x和y的值不会被修改,因为我们传入的是变量x和y的拷贝。
void swap3(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int x = 6;
int y = 9;
swap3(x, y); // x = 6, y = 9
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14