const關鍵字的作用

2021-07-10 21:37:14 字數 1621 閱讀 7471

相傳在c的世界裡出現了一件極品裝備(鐵布衫)const、它的出現,讓天下的所有刺客和黑客都聞風喪膽,在它的保護下,所有的變數都可以儲存的完好無損

const是constant的縮寫,表示海枯石爛、恆定不變、一旦相伴、永不變心。只要乙個變數前面用const來修飾,就意味著該變數的資料可以被訪問,不能被修改。其實我們還可以叫它readonly

雖然理解起const來相對比較容易理解,但是const不僅僅可以用來修辭基本型別,它還可以經常用來修辭一些構造型別和指標及其參合體,如陣列、指標、指標陣列、結構體陣列、結構體指標陣列一旦和這些複雜的型別結合起來還是有一定的迷惑性的

例如:

(1) const int a = 10;

(2) int const a = 10;

(3) const int a[10] = ;

(4) const int *p;

(5) int * const p;

(6) const struct devices dev[5];

(7) struct devices const * dev[5];

看到上面的例子,我相信很多人都會倒吸一口冷氣。話不多說直接看辨識技巧

將型別去掉;

看const修飾誰,誰就擁有鐵布衫,誰的值就不能被修改,是readonly

(1)去掉型別 int 變成「const a = 10」,a 擁有了鐵布衫,a的值是不變的

(2)去掉型別 int 變成「const a = 10」,a 擁有了鐵布衫,a的值是不變的,這兩個的效果一樣

(3)去掉型別 int 變成「const a[10]」, a[10]擁有了鐵布衫,a陣列裡面的值是不變的

(4)去掉型別 int 變成「const *p」,*p擁有鐵布衫,p所指的空間裡面的值是不變的

(5) 去掉型別 int * 變成 「const p」,指標變數p擁有了鐵布衫,指標變數p的值不變,也就是說p不能再指向其他位址了,但是p所指向的空間的值可變

(6)去掉型別struct devices變成「const dev[5]」,dev[5]擁有了鐵布衫,dev[5]陣列的值不變

(7)這是乙個devices結構體型別的指標陣列,它擁有5個devices結構體型別的指標,每個指標指向乙個devices結構體,const修飾*dev[5],去掉型別struct devices變成「const *dev[5]」,指標陣列*dev[5]擁有了鐵布衫,指標陣列dev中每個元素指向的空間裡的值不變。

作用總結:

首先、const關鍵字修飾變數名的時候,把這個變數變為是乙個唯讀變數,這裡的唯讀不是全域性資料區的or段。它所修飾的變數原來是在哪個區域,const修飾之後它還在那個區域。比如修飾乙個區域性變數const int num = 5;那麼這個區域性變數還是存在棧空間上。它本身對應的記憶體空間還是可以變的。但是不可以通過num去修改它。如果定義乙個指標指向num的位址。則可以改變num的值。其次、const可以修飾形參(保護形參不被修改),在這一點上,站在實現者的角度,const可以防止函式對實參修改帶來的問題。站在呼叫者的角度來說,它對於實參只能訪問,不能修改。所以、合理地使用關鍵字const可以使編譯器很自然地保護那些不希望被改變的引數,防止其被無意的**修改。簡而言之,這樣可以減少bug的出現。

關鍵字const的作用

關鍵字const的作用是什麼?1 欲阻止乙個變數被改變,可以使用const關鍵字。在定義該const變數時,通常需要對它進行初始化,因為以後就沒有機會再去改變它了 2 對指標來說,可以指定指標本身為const,也可以指定指標所指的資料為const,或二者同時指定為const 3 在乙個函式宣告中,c...

const關鍵字的作用

在c語言中 1 修飾變數 const修飾的變數不可以改變,為唯讀。c語言中,可以用強制型別轉換,通過指標來改變變數的值 2 修飾指標 如果const位於 的右側,eg.char const p const就是修飾指標本身,即指標本身是常量 如果const位於 的左側,eg.char const p ...

const關鍵字的作用

1 防止被修飾的成員的內容被改變。2 修飾類的成員函式時,表示其為乙個常函式,意味著成員函式將不能修改類成員變數的值。3 在函式宣告時修飾引數,表示在函式訪問時引數 包括指標和實參 的值不會發生變化。4 對於指標而言,可以指定指標本身為const,也可以指定指標所指的資料為const,const i...