const是用來限定所指定的變數或者函式不可作修改。
1)修飾變數
當const用來修飾變數的時候,const所指定部分不可修改。
a. 修飾常規變數
如:const int a = 10;
int const a = 10; // 這兩種方式的效果一樣,都是將a描述為常量,a的值在被賦初值後不可以修改。
但是這和由巨集定義的常量(如:#define n 10)又有所區別,前者的常量是有型別的,而由巨集定義的沒有型別。而且,前者在使用過程中,只會產生乙個副本,但是巨集定義的會有多個副本。
b.修飾帶*的變數
如:1、 int const *a; //修飾的是(*a),則表示a所指的變數的內容不可變。
2、int * const a; // 修飾的是a,則表示a不可變,即a只能指向初始指向的記憶體單元。
3、const int * a ; //a和*a均不可變,即不可作為左值。
2)修飾函式
a.修飾函式引數
如:void f(const int a); //a在該函式中不可被修改(雖然如此規定,但是a的修改在這裡本身就不會修改實參的值),且可以傳遞常量
void f(const int & a); //可以保證引用不被修改
b. 放於函式名前,表示返回值不可被修改。無意義。
c. 放於函式名後,此時只可修飾類成員函式。表示,該物件的資料成員不可被修改,且資料成員中的const資料只可被此類成員函式呼叫。
如:class a
private:
int a;
public:
void fun() const
{int b =a;//a不可作為左值}
}
const修飾符 小結
1.const 和extern 預設狀態下const物件僅在檔案內有效 當編譯器以初始化的方式定義乙個const物件時,編譯器將在編譯過程中吧用到該變數的地方都替換成對應的值,為了執行上述替換,編譯器必須知道變數的初始值,所以通常const的有效域就在本檔案 為了能在其他檔案中使用該const變數 ...
也談const 修飾符
指向常量物件的指標與常量指標,兩者在表達方式及作用意義上有什麼不同?const int count int const pint 兩者有什麼不同呢?一.指向常量的指標 const int count 實際表示count 所指向的物件是int 型的常量物件,它意味著不能通過該指標來間接地修改任何它所指...
CONST修飾符的理解
目前在進行c語言補習時,發現很多的同學對於const這個關鍵字的理解存在很大的誤解。現在總結下對這個關鍵字理解上的誤區,希望在以後的程式設計中,能夠靈活使用const這個關鍵字。1 const修飾的變數是常量還是變數 對於這個問題,很多同學認為const修飾的變數是不能改變,結果就誤認為該變數變成了...