C 引用和指標的區別

2021-07-16 05:27:44 字數 1133 閱讀 4468

很久沒寫過這類文章了,本來是想做下筆記,既然要做筆記,不如寫下部落格,就動起手來。文采不怎麼樣,還忘大家見諒

c++引用變數是c++中新增的一種復合型別,也就是說標準c語言中沒有引用變數。所謂引用,實際上就是乙個已定義變數的別名,別名我想大家小時候都有,應該可以理解,別名表示的是同乙個人,這裡引用變數和變數本身表示的是同乙個變數,他們指向相同的值和記憶體單元。

引用變數的主要(典型)用途是用作函式的形參,而且通常是大型結構和物件引數,除指標之外,引用也為函式處理大型結構提供了一種方便的途徑。同時對於類設計來說,引用也是必不可。

引用和指標很像,但是這兩者之間還是有區別的:

1.表示方法不同

引用很接近const 指標,可以將引用看作是偽裝表示的const指標,『 * 』(解除引用)運算子被隱式理解。。也就是被偽裝了

2. 必須在宣告引用變數時將其初始化。而指標可以先宣告再賦值。

引用必須在建立時進行初始化,這和const變數一致,一旦和某個變數關聯起來就一直效忠於它,也就是說不能修改引用關聯的物件。

int & b = a;

實際上是以下**的偽裝表示

int * const pb = &a;

其中  b、*pb與 a 可以互換。  &b, pb 與 &a 可以互換

再舉個試圖修改引用指向的例子:

int a = 50;

int &ra = a;   //現在pa是a 的引用

int b += 100;

ra = b;     //試圖讓pa 成為 變數b 的引用。

表面上看ra 是  b 的引用了, 實際上這裡 ra仍然是a 的引用,ra=b相當於是 a=b,  結果是修改了a 的值,ra和a的關係並沒變。

總之,只能通初始化宣告來設定引用,但不能通過賦值來修改引用的物件。

再來看一段**

int a = 50;

int *pa = &a;

int & ra  =  *pa;   //現在ra是a 的引用

int  b = 100;

pa = &b;

因 ra 初如化為*pa 使得ra引用a,接下來修改pa,使其指向b,  但是不能改變 ra 引用的是a 這個事實。

關於為什麼c++中要有引用,對於類設計來說,引用也是必不可少的,這個問題容以後補充介紹。

C 引用和指標區別

一 引用簡介 引用就是某一變數 目標 的乙個別名,對引用的操作與對變數直接操作完全一樣。引用的宣告方法 型別識別符號 引用名 目標變數名 例1 int a int ra a 定義引用ra,它是變數a的引用,即別名 說明 1 在此不是求位址運算,而是起標識作用。2 型別識別符號是指目標變數的型別。3 ...

C 引用和指標的區別

c 引用和指標在間接使用其他物件的各種操作功能上面類似,但是兩者的不同之處也很明顯 1.指標本身佔據記憶體空間,但是引用只是乙個物件的別名,本身不分配記憶體空間 2.指標定義時可以不初始化,但是定義乙個引用必須進行初始化,並且初始化時只能是乙個物件 比如 int b 3.14 這樣是錯的,要明白 引...

C 指標和引用的區別

一 前言 作為一名c 程式設計師,關於指標和引用必須要有足夠的認識。最近在閱讀 大全2 感覺學習了很多,其中第13章,談論了這個部分。二 指標和引用的區別 在c 中,指標 和引用 都能夠間接地引用物件。對新手來說,看起來只是obj field 和 obj.field 的區別。他們的區別在於 1.引用...