C 引用詳解

2021-09-13 13:58:41 字數 901 閱讀 2390

引用

#include

using

namespace std;

intmain()

const引用
#include

using namespace std;

intmain()

引用做引數/返回值
#include

using namespace std;

inttestrefreturn

(int a)

int&

testrefreturn

(int

& a)

intmain()

這裡第乙個函式是普通的引數和返回值設定,即用什麼拿什麼接收;這樣的話在傳入引數和返回引數時,都會先建立乙個臨時拷貝,再進行操作,如果是乙個結構體,會產生極大的浪費,而第二個函式在引數和返回型別上都是引用,根據引用的特性,這樣的話便不再產生臨時變數,極大提公升效能;

但在這種情況下,就會出問題了:

int

&add

(int a,

int b)

intmain()

//執行結果是隨機值;

注意:如果函式返回時,離開函式作用域後,其棧上的空間已經還給系統,當其他呼叫其他函式時,系統會把這塊空間分給它,這時引用所指向的空間資料就會發生不可控改變,因此不能再使用站上的空間作為引用型別返回,因此,不能返回當前函式的區域性變數的引用(返回值的生命週期必須比函式生命週期長的時候才能用引用型別返回),可以使用static或者全域性變數演唱引用的生命週期

引用與指標的區別

C 引用詳解

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

C 引用詳解

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

C 「引用」詳解

引用是識別符號的 別名 或者這樣說,如果為乙個物件定義了引用,那麼這個引用就相當於這個物件的 別名 就類似於有個同學叫王明,但是他還有乙個外號,叫大毛,那麼這個大毛即是王明的別名。模擬推論,引用即是物件的別名。定義引用一般採取如下形式 型別 引用變數名 已定義的變數名 需要注意的是 定義乙個引用的時...