函式引數是指標 OR 引用?該不該加const

2021-09-13 20:08:26 字數 1009 閱讀 6114

1.指標可以在任何時候被初始化,引用在建立時必須初始化。

2.一旦引用被初始化為乙個物件,就不能被指向到另乙個物件。指標可以在任何時候指向到另乙個物件。

3.不存在空引用。引用必須連線到一塊合法的記憶體。

4.無論傳值還是傳指標,函式都會生成乙個臨時變數,但傳引用時,不會生成臨時變數。引用並不產生物件的

副本,也就是引數傳遞時,物件無須複製。

5.引用在定義時不可加const,否則編譯出錯,在形參前面則可以加const以確保在函式中該變數不會被修改。

一般情況下,建議使用引用,因為不產生物件的拷貝,速度快。但是也不是說指標就一無是處了。

摘自『高質量c++程式設計』

條款一:指標與引用的區別

指標與引用看上去完全不同(指標用操作符』*』和』->』,引用使用操作符』.』),但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?

首先,要認識到在任何情況下都不能用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但是該變數在某些時候也可能不指向任何物件,這時你應該把變數宣告為指標,因為這樣你可以賦空值給該變數。相反,如果變數肯定指向乙個物件,例如你的設計不允許變數為空,這時你就可以把變數宣告為引用。

答案是當你不想也不願別人改變你的引數值時。

C 函式傳遞引用指標引數問題

僅作為參考 記錄 函式如果直接傳遞指標,如呼叫init linklist l l的初始指向為null,對l進行賦值,l指標不在指向null,而是指向new linklist 後的位址,但是無法對傳入的實參進行修改,l仍然指向null 這裡指標的傳遞仍然為值傳遞 初始化鍊錶 status init l...

指標和引用作為函式傳遞引數

引用傳遞 void outputnumber int nnumber 設定引用型別引數 intmain intargc,char argv 指標傳遞 void outputnumber int pnumber 使用指標作為函式引數 intmain intargc,char argv 輸出結果是一樣的...

指標作函式引數,引用作函式引數以及記憶體釋放

指標作為函式引數 1.函式引數概念 形參 被調函式中的引數 實參 主調函式中的引數 形參和實參 c 中函式中實參和形參是按值傳遞的,呼叫函式後,會將實參的值拷貝給形參 即形參和實參之間是沒有關係的,只是它們的值是相同的 在被調函式中不可以改變實參的值,同樣形參定義在被調函式中,在整個函式體內都可以使...