zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    Remote Debugging (2)
    Remote Debugging (3)
    在面试中常见额智力测试
    异常处理和约束
    方法&函数区别,反射
    类与类之间的关系
    成员
    初识面向对象
    一些令你""呵呵''的题目
    内置函数二 & 递归 & 二分查找
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/7201394.html
Copyright © 2011-2022 走看看