在寫**的過程中,我們常常利用define來定義一些常量元素,起到了對元素內容的封鎖作用,使他無法在函式內部被更改。那麼如果我們在寫引數的時候也想要封鎖原資料呢?
這時候我們就可以使用const來定義常變數。
const在定義常變數時,可以將變數變成唯讀,即不可寫,無法對元素進行賦值。
而資料型別對於const來說是完全透明的,
const
修飾它的
直接右邊
,即無視它右邊的資料型別。
關於這句話我們可以理解為資料型別無論放在const 與 元素名中間還是
const
之前,二者表示的意義都是相同的
例如const
inta
=10; 等價於
intconst a=10;
const在修飾指標時就顯得比較特殊了,因為它有
const int *p=&a
;
* const int p=&a
;
int * const p=&a三種形式
對於const int *p=&a而言,
const
修飾的直接右邊是*p
,因此它對*p起到了封鎖作用,如果在下面進行
*p=200
的解引用就無法完成,但是對
p進行位址賦值的
p=&a
就可以進行
而 * const int p=&a中,
const
修飾的直接右邊則是p,
因此它對p起到了封鎖作用,如果在下面進行
*p=200的解引用就能夠完成,但是對
p進行位址賦值的
p=&a
就無法進行。
最後要說的是關於const的許可權傳遞問題,許可權可以同等或縮小的傳遞,不能進行放大傳遞
這句話可以理解為,如果乙個變數被賦予了可讀和可寫的許可權,那麼它能夠賦予別的元素可讀可寫或唯讀或只寫許可權,而可讀許可權只能賦予可讀許可權,可寫許可權只能賦予只寫許可權。
關於這個問題的實際應用在後面的部落格中會有具體體現。
C語言指標初見(一)
最近一直在學習c語言指標,一直想總結一下,終於騰出來時間了,如果有寫錯的地方希望大家多多指正!乙個變數的位址稱為該變數的 指標 如果有乙個變數專門用來存放另一變數的位址 即指標 則它稱為 指標變數 指標變數就是位址變數,用來存放位址,指標變數的值是位址 即指標 定義乙個整型變數int a 定義乙個指...
C語言指標 初見指標
種一棵樹最好的時間是十年前,其次是現在。如有錯誤請指出,謝謝 一 指標變數 在說指標變數之前,先說一下位址這個東西。現在大多數計算機裡都是記憶體被劃分為位元組,然後每個位元組可以儲存8位資訊,比如01010101,每個位元組有唯一的位址。有的變數佔據乙個或多個位元組記憶體空間,把第乙個位元組的位址看...
c語言 Const專題
const 專題 intmain 和 的作用是一樣的 不能隨便修改 的值 const 放在 的左邊,修飾的是指標 中儲存的位址所指向的記憶體空間,是指指標 中所儲存的位址所指向的記憶體空間不可被寫,只可被讀 const 放在 的右邊邊,修飾的是指標 中儲存的位址,是指指標 中所儲存的位址不可改變,但...