C++中的指针与引用的区别与联系

引用与指针实质上都是间接地指代另一个变量,引用相当于该变量的外号或者小名,而指针实质上是指向该变量的地址进而操作该变量

区别1指针的地址与该变量不同,但引用的地址与该变量相同相同

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int i = 5;
 8     int& j = i;
 9     int *p = &i;
10 
11     cout << &i << endl << &j << endl << &p << endl;
12 
13     return 0;
14 }

结果如下

区别2:引用变量不能为空,声明引用变量时一定要初始化,初始化后就一直是该变量的小名,不会被改变,而指针可以为空,指针指向的值也可以改变

观看下面程序

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int i = 5;
 8     int& ri = i;
 9     
10     int j = 10;
11 
12     ri = j;//将变量j赋给ri,即赋给i
13 
14     j++;
15 
16     cout << i << " " << ri
17         << " " << j << endl;
18 
19     return 0;
20 }

结果

解释:引用一旦初始化后就只会是初始化变量的小名,不会被改变,既ri一直是i的小名,不会因为j赋值而变成j的小名

区别3:引用的效率比较高,因为引用不会为空,不用进行检查是否为空,而指针需要检查

 1 void func(int& x)
 2 {
 3     cout << x << endl;
 4 }
 5 
 6 void func(int *p)
 7 {
 8     if (p)
 9         cout << *p << endl;
10 }

总结:该变量不会再指代其他东西时,可以使用引用,比如说函数形参

原文地址:https://www.cnblogs.com/cdp1591652208/p/7201394.html