const 修飾符在C C 中的作用

2021-06-22 20:18:18 字數 2232 閱讀 1774

**:有稍修改)

1.1.1.定義普通常量

const double pi = 3.1414926;

const int pool_size = 20;

定義常量有三種方法:巨集、const

、enum

,其中巨集應該盡量避免,而

const

與enum

也各有優缺點,最大的區別就是

enum

只能用於定義包括0的正整數,而不能定義浮點數;而對於定義邏輯關係較近的一組整數時比較適合使用

enum

,也可以考慮使用類代替

enum

。常量必須在定義時進行初始化,之後便不能再賦值。說它不能被賦值並不是說常量的值是絕對不會改變的,只是說不能直接賦值,但可以通過指標及強制型別轉換、const_cast

是可以改變常量的值的。

1.1.2.修飾指標

把const

與指標放到一起,很多人便會想到乙個繞口令

「指標常量與常量指標。

「指標常量

」即乙個指標變數,該變數不能被賦值,而指標指向的記憶體單元的內容是可以改變的;

「常量指標

」即乙個指向常量的指標,指標變數本身可以賦值,而指標指向的記憶體單元的內容是不可以被重新賦值的。

const是修飾型別還是修飾指標,要看

const

的位置,放在

*前就是修飾資料型別,放到

*後就是修飾指標,

const char

和char const

是一樣的。

1.1.3.修飾類成員常量

當使用const

修飾類成員變數時便定義了常資料成員,它的使用與使用類外定義的常量本質上並沒有什麼區別

,由定義知也是靜態的,在這裡只想指出一點:

const

資料成員只能被

const

修飾的函式使用這是沒有根據的,也就是不成立的。

1.1.4.修飾類成員函式

const修飾成員函式語法:

typereturn function(params) const;

使用const

修飾的成員函式不能修改類的成員變數(不管是不是const變數),而且只能呼叫成員類物件

const

函式,這是為了保證防止在函式中對成員資料進行修改,但有個例外,就是

mutable

修飾的成員變數可以在

const

修飾的成員函式中被修改。

另外,const

只能修飾非靜態函式。

1.1.5.修飾類物件、物件引用或物件指標(常量指標)

當const

修飾自定義的類物件時,與修飾

c++內建型別的變數的思想是一致的,但稍有不同,除了不能被賦值外,還不能呼叫沒有使用

const

修飾的非靜態成員函式。當

const

修飾類物件引用、指標時限制是一樣的,因為引用本身與直接使用該變數實質上沒有區別,而使用指標只是將

.操作符改為了

->

本質上還是一樣的

1.1.6.修飾函式引數

const修飾函式的例子是很常見了,表示函式的引數在函式體內不會被意外修改,一般用於修飾輸入引數,例如標準庫中的字串連線函式。

str1

是輸出引數,其內容會被修改,而

str2

為輸入引數,其內容不會修改

(其實這也不一定)。

char* strcat(char* str1, const char* str2);

1.1.7.修飾函式返回值

const可以用於修飾任何型別,只要返回值型別不是

void

,const

就可以用來修飾返回值的型別。但實際上

const

用於修飾非引用的返回值型別是沒有意義的,因為在將返回值賦予另乙個變數時,返回的只是乙個常數值,並且

此時用於傳遞返回值的物件已經被銷毀,不用擔心物件值被更改。

c++:當返回值是引用型別時,如果該引用的值不希望被修改是可以宣告為常引用的返回型別的。

C C 中const修飾符總結

c c 中的const是乙個修飾符,它允許你指定乙個語義上的約束,也就是可以通過const指定乙個 不該被改動 的物件,而編譯器會強制實施這項約束。const語法很多 但都不複雜 下面我將分別講述各種語法及其作用。在講述const修飾符用在指標上有什麼效果之前先來看下指標不加const修飾符的情況 ...

C C 中的const修飾符用法總結

const的基本含義 所以,const修飾符的作用主要是利用編譯器幫助我們檢查自己 的正確性。我們使用const在原始碼中標示出 不應該改變 的地方,然後利用編譯器,幫助我們檢查這些地方是否真的沒有被改變過。如果我們不小心去修改了這些地方,編譯器就會報錯,從而幫助我們糾正錯誤。使用const和不使用...

C 中const修飾符

const只對它左邊的東西起作用 唯一的例外就是const本身就是最左邊的修飾符,那麼它才會對右邊的東西起作用。指標常量 關鍵字順序為 const 和中文順序一致 例如 int const a,表示指標a是乙個常量,初始化後不可更改 永遠指向某個物件 但是指向的物件的值可以修改,如 a 10 常量指...