當將變數宣告為引用時,它將成為現有變數的替代名稱。透過在宣告中新增“&”,可以將變數宣告為引用。
C++:
輸出: x = 20 ref= 30
應用範圍:
修改函式中傳遞的引數:如果函式收到對變數的引用,則可以修改變數的值。例如,以下程式變數使用引用進行交換。
C++:
1.避免 複製大型結構:想象一個必須接收大型物件的函式。如果我們透過它而沒有引用,則會建立它的新副本,這會浪費CPU時間和記憶體。我們可以使用引用來避免這種情況。
C++:
2.在“對於每個迴圈”中修改所有物件:我們可以在“對每個迴圈”中使用引用來修改所有元素
C++:
3.對於每個迴圈,避免 物件的複製:當物件較大時,我們可以在每個迴圈中使用引用來避免單個物件的複製。
C++:
參考與指標:
引用和指標都可以用於更改另一個函式內部的一個函式的區域性變數。當作為引數傳遞給函式或從函式返回時,它們都還可以用於儲存大物件的副本,以提高效率。儘管有上述相似之處,引用和指標之間還是存在以下差異。
1.可以將指標宣告為void,但是引用永遠不能為void。例如
整數a = 10;void * aa =&a;//有效無效
&ar = a; //無效
2.指標變數具有n級/多級間接定址,即單指標,雙指標,三指標。而參考變數僅具有一個/單個間接級別。以下程式碼揭示了上述要點:
引用的功能不如指標
1)建立引用後,以後就不能再引用其他物件了;它無法重新放置。這通常是透過指標完成的。
2)引用不能為NULL。指標通常被設定為NULL,以指示它們沒有指向任何有效的物件。
3)引用必須在宣告時進行初始化。指標沒有這種限制
由於上述限制,C ++中的引用不能用於實現連結列表,樹等資料結構。在Java中,引用沒有上述限制,可以用於實現所有資料結構。Java中引用更強大是Java不需要指標的主要原因。
更安全,更易於使用:
1)更安全:由於必須先初始化引用,所以不太可能存在諸如野指標之類的野引用。仍然有一些引用不能引用有效位置
2)易於使用:引用不需要解引用運算子即可訪問該值。它們可以像普通變數一樣使用。僅在宣告時才需要“&”運算子。同樣,可以使用點運算子('。')訪問物件引用的成員,這與需要箭頭運算子(->)訪問成員的指標不同。
結合上述原因,在諸如複製建構函式引數之類的地方很少有不能使用指標的地方。必須使用引用在複製建構函式中傳遞引數。同樣,必須使用引用來過載某些運算子,例如++。
另外如果你想更好的提升你的程式設計能力,學好C語言C++程式設計!彎道超車,快人一步!筆者這裡或許可以幫到你~
程式設計學習書籍分享:
程式設計學習影片分享:
分享(原始碼、專案實戰影片、專案筆記,基礎入門教程)