引用,reference 在本質上就是指標,從建立開始,就與目標繫結
指標定義
int a = 123;
int* p = &a;
稱作:「p指向了變數a」
引用定義
int a = 123;
int& r = a; //引用的定義
稱作:「r是變數a的引用」 「r引用了變數a」 和指標是乙個意思
指標的使用
int a = 123;
int* p = &a;
*p = 999;
引用型別
int a = 123;
int& r = a;
//引用的定義
r = 999;
//隊r的操作,就是對a的操作
引用可以看作是目標物件的乙個別名,對引用的操作其實就是對目標物件的操作。r的位址與a的位址相同
注意事項:
1)引用必須在定義的時候初始化,也就是建立就要與目標物件繫結。
以下**有語法錯誤:
int a = 123;
int& r; //語法錯!必須初始化!
2)引用在定義時就與目標物件繫結,無法解綁
引用的更多用法
(1)引用作為函式的引數
和指標類似,引用也可以作為函式的引數,功能相同。「傳引用」和「傳位址」本質相同。
所以,引數的傳遞有兩種方式:
1>傳值(效率低)
2>傳位址或傳引用(效率高)
(2)引用作為函式的返回值
和指標一樣,引用也可以作為函式返回值
例:int number = 0;
//全域性變數
int& test()
注意:普通函式的返回值都只是右值,只有返回引用時才能當做左值來用。
和指標一樣,引用也有安全性問題。
主要是檢查引用的目標物件是否有效
比如,引用的目標物件是乙個區域性變數,那麼,在函式退出後,目標物件失效,所以引用也就不能用了。
例:int& test()
c 學習筆記 引用
引用 引入物件的乙個同義詞,不會產生新的物件!例如 point p1 m,n point p2 p1 p2為p1的同義詞,改變p2的同時也會改變p1,但是編譯器並沒有給p2單獨分配記憶體,他和p1是共用一塊記憶體的!引用和const一樣,必須馬上初始化 例如如下類 class point publi...
C 學習筆記 引用
引用是c語言中沒有,而在c 中又很重要的乙個概念,通過應用,可以得到變數本身,相對於得到變數的值而言,有更大的操作空間。變數的本質 變數名實質上是一段連續儲存空間的別名,是乙個標號 程式中通過變數來申請並命名記憶體空間 通過變數的名字可以使用儲存空間 引用是c 的概念,屬於c 編譯器對c的擴充套件i...
C 引用學習筆記
作用 給變數起別名 語法 資料型別 別名 原名 如 int a 10 int b a 其中a與b是等效的,兩者指向的位址空間是一樣的 主要有兩點 1.引用前必須初始化 2.引用在初始化後,不可以改變 原因在引用的實質中會講到 作用 函式傳參時 可以利用引用的技術讓形參修飾實參 優點 可以簡化指標實參...