1. 程式人生 > 其它 >C++:引用的簡單理解

C++:引用的簡單理解

一、什麼是引用

引用,顧名思義是某一個變數或物件的別名,對引用的操作與對其所繫結的變數或物件的操作完全等價

語法:型別 &引用名=目標變數名;

C++ 引用 vs 指標

引用很容易與指標混淆,它們之間有三個主要的不同:

  • 不存在空引用。引用必須連線到一塊合法的記憶體。
  • 一旦引用被初始化為一個物件,就不能被指向到另一個物件。指標可以在任何時候指向到另一個物件。
  • 引用必須在建立時被初始化。指標可以在任何時間被初始化。

建立引用

#include <iostream>
 
using namespace std;
 
int main ()
{
   // 宣告簡單的變數
   int    i;
   double d;
 
   // 宣告引用變數
   int&    r = i;  //可以讀作:r 是一個初始化為 i 的 int 型引用
   double& s = d;  //可以讀作:s 是一個初始化為 d 的 double 型引用
   
   i = 5;
   cout << "Value of i : " << i << endl;
   cout << "Value of i reference : " << r  << endl;
 
   d = 11.7;
   cout << "Value of d : " << d << endl;
   cout << "Value of d reference : " << s  << endl;
   
   return 0;
}

上面程式碼編譯執行後得到的結果:

Value of i : 5
Value of i reference : 5
Value of d : 11.7
Value of d reference : 11.7

C++引用幾個需要注意的點

1.引用必須在宣告時將其初始化,不能先聲明後賦值

int main()
{
  int rats = 10;
  
  //宣告引用,旦未初始化
  int &rodents;

  rodents = rats;

  return 0;
}

上述程式碼編譯時會報以下錯誤:

error: ‘rodents’ declared as reference but not initialized

2.引用更接近const指標,必須在建立時進行初始化,一旦引用和某個變數關聯起來,該引用就會一直指向該變數。

C++引用的應用

  • 把引用作為引數
    ( C++提供了 傳遞變數的引用。形參是引用變數,和實參是一個變數,呼叫函式時,形參(引用變數)指向實參變數單元。這種通過形參引用可以改變實參的值。)

兩個printf的結果都是10。

總結:
B 引用 A:相當於 B 借用了 A 的記憶體地址和值,A 和 B 任意一個發生改變的話 AB 同時改變。

指標 B 指向 A:B 借用了 A 的值,但是B的記憶體地址重新分配,不同於 A。