C 的const限定符對引用和指標的作用

2021-08-10 20:25:03 字數 705 閱讀 1097

const限定符表示定義的變數是個常量,不允許修改,但是const限定符和引用和指標結合起來的時候就變得稍微複雜點了。

1、const限定符和引用的結合

首先引用本身初始化之後不允許修改所繫結的物件,但是可以通過引用來修改繫結的物件,但是和const結合之後,就不可以修改繫結的物件了。

比如:int b = 1;

int &a = b;

可以通過修改a來修改b。

int b = 1;

const & a = b;

這樣定義之後,不允許通過a來修改b的值,但是b本身不是乙個常量,可以通過其他方式來修改b的值。

2、const限定符和指標的結合

const和指標的結合情況更多一點,有三種情況。

(1)int a = 0;

int * const p = &a;

這種情況表示p是乙個常量指標,不可以修改p指向的物件。

(2)const a = 0;

const int *p = &a;

這種情況表示可以改變p指向的物件,但是物件的內容不可以改變,就是指標指向的是乙個常量。

(3)const a = 0;

const int *const p = &a;

這種情況表示p本身是乙個常量指標,不可以修改指向的物件,同時,物件也是乙個常量。

在遇到複雜的表示式時,需要從右向左去閱讀,離變數最近的表示變數的屬性。 

const限定符和引用和typedef

1.定義const物件 const int i 10 變數i仍然是乙個左值,但是現在這個左值是不可修改的,任何修改i的嘗試都會導致編譯出錯。2.const物件預設為檔案的區域性變數 非const變數預設為extern。要使const變數能夠在其他的檔案中訪問,必須顯示的指定它為extern。3.引用...

C 的const限定符

const限定符總是讓人很頭疼,下面講解一下幾個比較容易混淆的概念 對常量的引用 常量引用 一般情況下,引用的型別要與其所引用的物件的型別一致,其中的例外情況就是,當初始化常量引用時,允許用任意表示式作為初始值,只要改表示式能轉換成引用的型別即可。const int i 1 const int ri...

C 的const限定符

一 const常量 const int a 123 編譯時初始化 const int a get size 執行時初始化 a 111 錯誤,a是常量物件,不能改變了 const int b 錯誤 二 對const和const引用的初始化 初始化常量或常量引用時允許用任意表示式作為初始值,只要該表示式...