引用不如指標強大?C 引用,為你深度解析

2022-06-10 14:27:12 字數 2125 閱讀 1957

引用被稱為變數的別名,它不能脫離被引用物件獨立存在,這是在高階語言層面的概念和理解,並未解釋引用的實現方式。常見錯誤說法是「引用」自身不是乙個變數,甚至編譯器可以不以引用分配空間。

實際上,引用本身是乙個變數,只不過這個變數的定義和使用與普通變數有顯著的不同。

當變數宣告為引用時,它將成為現有變數的替代名稱。變數可以通過在宣告中新增『&』來宣告為引用。

#include

using namespace std;

int main()

int x = 10;

// ref is a reference to x.

int& ref = x;

// value of x is now changed to 20

ref = 20;

cout << "x = " << x << endl ;

// value of x is now changed to 30

x = 30;

cout << "ref = " << ref << endl ;

return 0;

產出:

申請:

1.修改函式中傳遞的引數

如果函式收到對變數的引用,它可以修改變數的值。例如,在以下程式中,使用引用交換變數。

2.避免複製大型結構

設想乙個函式必須接收乙個大物件。如果我們在沒有引用的情況下傳遞它,就會建立乙個新的副本,這會導致cpu時間和記憶體的浪費。我們可以使用引用來避免這種情況。

3.在每個迴圈中修改所有物件*

我們可以在每個迴圈中使用引用來修改所有元素

4.在每個迴圈中避免物件的複製

我們可以在每個迴圈中使用引用,以避免在物件較大時複製單個物件。

引用與指標

引用和指標都可以用來改變乙個函式在另乙個函式中的區域性變數。這兩種方法還可用於在將大物件作為引數傳遞給函式或從函式返回時儲存對大物件的複製,以獲得效率增益。

儘管存在上述相似之處,但引用和指標之間還是存在以下差異。

指標可以宣告為無效,但引用永遠不能無效。

例如

int a = 10;

void* aa = &a;. //it is valid

void &ar = a; // it is not valid

引用不如指標強大?1)一旦建立了乙個引用,它以後就不能用於引用另乙個物件;它不能被重置。這通常是用指標來完成的。

2)引用不能為空。指標通常是空的,以表示它們沒有指向任何有效的東西。

3)必須在宣告時初始化引用。指標沒有這樣的限制。

由於上述限制,c++中的引用不能用於實現鏈結列表、樹等資料結構。

好了,今天就講到這裡了。如果你想更好的提公升你的程式設計能力,好好學習c/c++程式設計知識的話!那麼你很幸運~

「點選鏈結」加入c語言/c++企鵝圈,這裡還有一些你可能不知道的趣事分享喲。

關於C中指標的引用,解引用與脫去解引用

在指標操作中的意義 1 大家都知道在寫int p 時,可以宣告乙個指標。很少人知道 在c c 中還有乙個名字就是 解引用 他的意思就是解釋引用,說的通俗一點就是,直接去尋找指標所指的位址裡面的內容,此內容可以是任何資料型別,當然也可以是指標 這就是雙重指標,後面將會討論 需要注意的是,在變數宣告的時...

關於C中指標的引用,解引用與脫去解引用

在指標操作中的意義 1 大家都知道在寫int p 時,可以宣告乙個指標。很少人知道 在c c 中還有乙個名字就是 解引用 他的意思就是解釋引用,說的通俗一點就是,直接去尋找指標所指的位址裡面的內容,此內容可以是任何資料型別,當然也可以是指標 這就是雙重指標,後面將會討論 需要注意的是,在變數宣告的時...

C 引用與解引用 指標 位址與物件

自責中往往有種奢侈。我們自責時,往往覺得別人無權再責備我們。王爾德 指標曾是橫亙在我與程式設計之間的大山之一。程式中只要出現星號就會成為我的噩夢,而對於這一切我完全找不出原因。到了現在,可能更多的已經是心裡上的一種恐懼。所以一定要想辦法破除掉。曾經把我折磨地欲仙欲死的一種情況如下 int num 6...