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.方便的進行引數的調整和...