const的基本用法

2021-08-18 09:35:54 字數 2037 閱讀 2653

我們經常在程式語言中見到或使用到const,大家都知道const是定義常變數的意思,但是它是如何進行定義的,又有哪些使用規則呢。下面我和大家一起來了解了解。

在了解const之前,我們先來了解一下左值這個東西,左值:就是放在賦值符號左邊的值,它為具有寫許可權,就是說我們可以通過賦值符號來改變它的值。

1、const定義常變數。

用const定義常變數,他所定義的這個常變數不能寫,只能讀,就是說const定義的常變數只具有讀許可權,不具有寫許可權,不能通過賦值符號來改變這個常變數的值,只能讀取這個值。既然只能讀取這個值,那也就是說在定義的時候必須給它初始化,如果不進行初始化,需要通過賦值語句給它賦值的話 ,那常變數也就可以改變了,顯然是不合理的。

int main()

就像上面,我們把變數a定義成整型常變數,再把b的值賦值給a,這時候系統就會提示我們賦值符號左邊必須是可修改的左值,然而我們把a的值賦值給b,這又是可以的,這就是我們說的const定義的常變數只有讀許可權沒有寫許可權,不能更改。

這時候有人就會問,我們應該怎麼定義和使用const呢?定義的時候,它到底是放在資料型別的左邊還是右邊?

2、const與資料型別的位置。

在定義常變數時我們有以下兩種情況,第一種就是 資料型別 const 變數,例如 int const a=10;第二種就是 const 資料型別 變數,例如 const int b=20;讓我們通過下面一段**來看看這兩種情況有什麼區別?

int main()

我們可以看出,無論是把const放在資料型別的左邊還是右邊,所定義的這兩個整型常變數都是無法改變的值,他們都只具有讀許可權,沒有寫許可權。所以我們得出結論:資料型別對於const而言是透明的,例如 int const a=10;等價於const int a=10;

有人說const這麼簡單,不就是定義乙個無法改變的值嗎?這有什麼好了解的?如果const只有這麼一點點作用,那它也太簡單了 ,它難就難在了和指標一起使用。

3、const與指標的使用。

在const與資料型別中我們得出結論資料型別對於const來說是透明的,const無論是放在資料型別左邊還是右邊都是一樣的,那麼在定義常變指標量變數時是否也是這樣呢?我們先來定義乙個指標變數*p,int *p;那麼我們的const放在const int *p;int const *p;int * const p;這三個中的哪乙個呢,他們又有哪些不同的地方?我們還是通過下面一段**來看看這三種情況有什麼區別?

int  main()

從上面就可以看出*p1和*p2一樣,他們的區別只是const與資料型別的位置不同,然而資料型別對於const而言是透明的,不存在先後的問題,再看*p1與*p2的區別,*p1是const int *p1=&a;const直接修飾的是*p1,p1的值可以通過賦值語句將b的位址賦值給它,但是它不能通過解引用去修改a的值;*p2是 int *const p2;const直接修飾p2,p2就只能儲存a的位址無法更改,但卻可以通過解引用去修改a的值。我們可以得出乙個結論:const用於封鎖直接修飾的內容,將該內容變為唯讀。

那麼我們就有了乙個新的問題,我們應該如何去儲存乙個常變數的位址?

4、常變數位址的儲存。

我們知道普通指標變數不能儲存常變數的位址,那常變數的位址要怎麼去儲存,是用常指標變數還是指標常變數,或者是用常指標常變數儲存,我們用下面一段**來試一試。

int main()

我們可以看出整型常變數a的位址只能用p2和p4來儲存,而p1和p3就不能儲存。a為const常變數,只有讀許可權,沒有寫許可權,我們可以看出*p1和p1有讀許可權有寫許可權,*p2和p2只有讀許可權,*p3既有讀許可權又有寫許可權,p3只有讀許可權,*p4和p4都只有讀許可權,能儲存a的位址是p2和p4,p1和p3的許可權大於a,所以他們無法儲存a的位址,p2與p4的許可權與a相同,所以它們可以儲存a的位址。我們可以得出:許可權只能同等傳遞或縮小傳遞,不能放大傳遞。

const的基本用法

const的基本用法 flyfish 2009 2 19 1常量const在編譯器中遇到的問題 下面的這個 在預設設定的dev c 5中編譯通過只是出現警告,沒有錯誤產生 include int main 不允許更改常量指標,p只能指向n,p的指向是不允許更改的 3 作為函式引數傳遞 僅當函式不改變...

const基本用法

const定義常變數後,該變數沒有寫許可權,只有讀許可權 const用於定義常變數時,要進行初始化 例如 const int a 10 合法 而const int a 非法 資料型別對於const而言是透明的 例如 const int a 10 等價於 int const a 10 const in...

3 const 基本用法

includeusing namespace std brief main return 1 常量指標 表示這個指標是乙個指向常量的指標 變數 指標指向的物件是常量,那麼這個物件不能被更改。const int c m 或者 int const c m 2 指標常量 指標變數不可以修改,但是它指向的記...