c語言 初見const

2021-08-18 22:46:39 字數 1020 閱讀 4154

在寫**的過程中,我們常常利用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 放在 的右邊邊,修飾的是指標 中儲存的位址,是指指標 中所儲存的位址不可改變,但...