指標和引用

2021-09-24 10:40:10 字數 1408 閱讀 8921

1.引用是已經定義變數的別名。必須在申明引用的時候進行初始化。引用更接近於const指標,一旦和某個變臉關聯起來就一直效忠於它,不能改變(可以通過初始化來設定引用,但是不能通過賦值來設定)。

2.傳引用傳遞引用和值不同的一點就是,在函式中,傳值得話,在函式內部還會建立乙個臨時的變數,但是傳應用的話就不會,因為引用和需要傳進來值就是同乙份值。

3.和傳址的區別,除了他們在函式中申明的方式不一樣,就是傳址後在函式中會用到多次的解除引用*運算子。

4.引用的屬性:如果程式設計師的意圖是讓函式使用傳遞給它的資訊,而不是對這些資訊進行修改,同時又想使用引用,那就使用常量引用,

5.臨時變數,引用引數和const:如果實參和引用引數不匹配,c++將生成臨時變數。當且僅當引數為const引用的時候c++才允許這樣做。編譯器將在下面兩種情況下生成臨時變數:a.實參的型別是對的,但是不是左值。b.實參的型別不正確但是可以轉化成正確的型別.臨時變數只在函式的呼叫期存在,此後編譯器便把它隨意的刪除(具體詳細原因,參考c++primerplus 291頁有關const的詳解)。

6.盡可能使用const

a.使用const可以避免無意中修改資料的程式設計錯誤

b.使用const使函式能夠處理const和非const的實參,否者只能接受非const的資料。

c.const能讓函式正確生成並使用臨時變數

何時使用引用引數:

使用引用引數的主要原因有兩個

1.能夠修改呼叫i的函式中的資料物件

2.通過傳遞引用而不是整個資料物件,可以提高程式執行的速度

但資料物件較大時(結構和類),第二個原因很重要。這些也是使用指標引數的原因。這是有道理的,因為引用引數實際上是機遇指標的**的另乙個介面。那麼什麼時候應該使用引用,什麼時候該使用指標呢?什麼時候該使用傳值呢?原則如下:

如果物件資料很小,如內建資料型別或小型結構,則按值傳遞。

如果資料物件是陣列,就用用指標,這是唯一的選擇,並將指標申明為指向const的指標。

入股資料物件是較大的結構,就是用const指標或者const引用,以提高程式的效率。這樣可以節省複製構造所需要的時間和空間。

如果資料物件是類物件,則使用cosnt引用。類設計的語義常常要求使用引用,實則是c++的新增這項特性的主要原因,因此傳遞類物件引數的標準方式是按引用傳遞。

對於修改呼叫呼叫函式中的資料的函式:

如果資料物件是內建型別,則使用指標。如果看到諸如fixit(&x)這樣的**(其中x是int),則很明顯,該函式將修改x

如果資料物件數陣列,則只能用指標。

如果資料物件是結構,則使用引用或者指標。

如果資料物件是類物件,則使用引用(參考c++primerplus)

發表於

2015-04-13 13:21

周某某 閱讀(

...)

編輯收藏

重新整理頁面

返回頂部

指標和引用,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...

指標和引用

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