指针和引用

指针和引用的区别和指针传递与引用传递

指针传递
引用传递
值传递

指针传递

如果指针作为函数的参数,当引用该函数时,我们传入变量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

引用传递

int &a = x 代表 ax的引用,即a是x的一个别名; int &b = y 代表 by的引用,即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

拓展:值传递

如果传入函数的参数既不是指针也不是引用,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
Last Updated: 2021/11/21 06:41:06
Contributors: oddnaveed