返回const指標與返回const引用區別

2021-05-23 23:37:44 字數 961 閱讀 9732

const是c語言的一種關鍵字,起受保護,防止以外的變動的作用!可以修飾變數,引數,返回值,甚至函式體。const可以提高程式的健壯性,你只管用到你想用的任何地方。

(一)const修飾引數。const只能修飾輸入引數。

1、如果輸入引數是指標型的,用const修飾可以防止指標被意外修改。

2、如果引數採用值傳遞的方式,無需const,因為函式自動產生臨時變數複製該引數。

3、非內部資料型別的引數,需要臨時物件複製引數,而臨時物件的構造,析構,複製較為費時,因此建議採用前加const的引用方式傳遞非內部資料型別。而內部資料型別無需引用傳遞。

(二)const修飾函式返回值。

1、函式返回const指標,表示該指標不能被改動,只能把該指標賦給const修飾的同型別指標變數。

2、函式返回值為值傳遞,函式會把返回值賦給外部臨時變數,用const無意義!不管是內部還是非內部資料型別。

3、函式採用引用方式返回的場合不多,只出現在類的賦值函式中,目的是為了實現鏈式表達。

(三)const+成員函式。任何不修改資料成員的函式都應該宣告為const型別,如果const成員函式修改了資料成員或者呼叫了其他函式修改資料成員,編譯器都將報錯!

class stack

;int stack::getcount(void)   const

編譯器輸出錯誤資訊:error c2166: l-value specifies const object。

(四)const 修飾變數,表示該變數不能被修改。

1、const char  *p 表示 指向的內容不能改變

2、char * const p,就是將p宣告為常指標,它的位址不能改變,是固定的,但是它的內容可以改變。

3、這種const指標是前兩種的結合,使得指向的內容和位址都不能發生變化.

const double pi = 3.14159;

const double *const pi_ptr = π

函式返回的臨時物件為const型別,const引用

include include using namespace std class a public int m int a getint int test const a pa char test1 const a pa int main string foo 凡是返回值物件都是臨時物件?void...

C語言 const指標使用技巧之 返回指標的函式

引言 在c語言中,有些函式回返回指標,即為返回指標的函式。通常情況下函式的實現方不希望函式的呼叫方修改指標指向的內容。解決方案 在函式返回的時候返回乙個指向 const 變數的指標。示例 如下 cpp include stdafx.h static const int testpointertoco...

返回陣列指標

如果我們想定義乙個返回陣列指標的函式,則陣列的維度必須跟在函式的名字之後,然而函式名字之後的是形參列表,所以形參列表應該在陣列的維度之前。返回陣列指標的函式形式如下所示 type function parameter list dimension 下面這個func函式的宣告沒有使用型別別名 int ...