C語言中const的使用

2021-03-31 08:56:58 字數 1080 閱讀 4866

const and pass-by-value

使用乙個常量字首(const)可以避免傳址變數的修改:

void f(const string & s);

一些開發者即使針對傳值變數也用 const :

void f(const int n); /*n is passed by value, why const?*/

const 是否真的必要? 不, 不需要. 記住, 在你使用傳值變數的時候, 呼叫函式不會修改變數值而僅僅複製它. 進一步講, 根據 c++ 標準, top-level cv-qualification 字首是被忽略的. 讓我們解釋這個術語: "cv-qualification" 指常量和非穩定. "top-level" 意味著引數不是乙個組合或者非完整的型別, 比如: 不是指標, 引用或者陣列. 這樣:

void f(int const param1);

還是作為下列方式對待:

void f(int param1);

為此, 傳遞乙個型別為 'const int' 型別的引數給 void f(int param1); 是允許的:

void f(int n); /*non-const parameter*/

int main()

相反, 下列對於常量的使用則有影響:

void f(int *p1);

void f(const int *p2);

這裡, 常量被用於乙個組合型別, 稱之為 int *. 這樣, 不能傳遞型別為"乙個指向常量整數的指標" 給第乙個函式 f().

void f(int *p1); /*non const version*/

int n=0;

const int *p=&n;

f(p); /*error, cannot convert 'const int *' to 'int *'*/

作為乙個規則, 如果變數以傳值方式傳遞或者返回不能宣告為常量, 只有針對組合型別使用常量型別.

C語言中的CONST使用

c中的const使用 const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的安全性和可靠性。const的使用是c語言中乙個比較微妙的地方,請看下面幾個問題。問題 const變數 和 常量 為什麼下面的例子在使用乙個const變數來初始化陣列,ansi c...

C語言中const的使用

可以使用const關鍵字對變數加以限定 const int maxnum 100 班級的最大人數 這樣 maxnum 的值就不能被修改了,任何對 maxnum 賦值的行為都將引發錯誤 maxnum 90 錯誤,試圖向 const 變數寫入資料 我們經常將 const 變數稱為常量 constant ...

c語言中關於const的使用

const是c語言中乙個十分重要的修飾 我總結了它的含義使用以及作用如下 1.修飾的資料型別是常型別,常型別的變數或物件的值不能被改變 const int i 10 int a i 等價於int a 10 2.便於進行型別檢查,使編譯對處理內容有更多的了解,消除了一些隱患。3.方便的進行引數的調整和...