引用和指標

2021-08-17 06:39:36 字數 1136 閱讀 7298

1.引用的概念及用法:

引用:引用不是定義乙個新的變數,而是將已定義的變數起個新的名字,具體的表現方式:型別 &別名=已定義的變數名;

注意:①乙個變數可以起多個別名;②引用必須初始化;③當乙個變數起了別名之後,這個別名就不能被其他變數引用,即它只能是乙個定義過的變數的別名;

(同時注意:const引用時,表示將定義過的變數修飾成具有常性的變數(即不能被修改)①當變數已被const修飾過,則const引用時沒有任何問題;②當變數沒有被const修飾過,則const引用只是將變數修飾為常性,則也沒有問題;③當變數已經被修飾成const,而用 型別& 別名=變數 就會產生錯誤,這體現了引用時,許可權可以縮小但不能放大)

2.引用做引數 :

引用做引數時,具體的表現形式: 返回型別 函式名(型別& 別名,...);這種做法的優點在於,傳參只是傳變數的別名,沒有在函式體內置立臨時變數,使得節約空間,減少系統開銷。(這種方式是從函式內部改變函式外部的值),同時當我們不想改變傳入引數的值可以使用引用做引數: 函式名(const& 別名).

3.引用做返回值 :

引用做返回值時,以下例為例進行說明: 

int& add(int a,int b)

int& c=add(1,2);

這種方式存在風險,當在函式內部為臨時變數c開闢空間後,函式呼叫返回的時候臨時變數已經被銷毀,而我們已經不具備使用空間的許可權,很容易被系統將空間內的資料置為隨機值或者被其他資料占用;只有當我們對這片空間擁有許可權的時候,引用做返回值才不會產生錯誤。

4.彙編層看引用的特性 :

引用是在當前的空間上建立乙個別名表明這段空間,別名只是獲取到(已經定義的變數將位址賦予eax)位址,從而指明這片空間。

5.引用和指標的區別和聯絡:

1. 引用只能在定義時初始化一次,之後不能改變指向其它變數(從一而終);指標變數的值可變。

2. 引用必須指向有效的變數,指標可以為空。

3. sizeof指標物件和引用物件的意義不一樣。sizeof引用得到的是所指向的變數的大小,而sizeof指標是物件位址的大小。

4. 指標和引用自增(++)自減(--)意義不一樣。

5. 相對而言,引用比指標更安全。

指標和引用,const 指標和const 引用

指標和引用是在使用中經常弄混淆的兩個概念。引用 reference 為物件起了另外乙個名字,用符號 表示。name,例如 int i 1024 int ref i 一般在初始化變數時,初始值會被拷貝到新建立的物件中,然而定義引用時,程式把引用和它的初始值繫結 bind 在一起,而不是將初始值拷貝給引...

指標和引用

一 先看一段 include using namespace std void freeptr1 int p1 void freeptr2 int p2 void main 思考 在 freeptr1 和freeptr2 的比較中,你能發現它們的不同點嗎?二 對 進行解釋 include using...

指標和引用

指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能使用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但...