const關鍵字總結

2021-09-20 13:17:34 字數 2484 閱讀 5810

;這裡會呼叫string類的預設建構函式初始化陣列元素。

const

int* cur;

這裡的cur是乙個指向int型別的const物件的指標,const先頂了cur指向的物件的型別,而並非cur本身,所以cur不是const的

const

double

* cur;

const

double pur =

1.2;

cur =

&pur;

const指標

int pur =10;

int*

const cur =

&pur;

上述語句被稱為「指向int型物件的const指標」

class

stack

;int stack::

getcount()

const

;

void

print()

;void

print()

const

;int

main()

const物件對應const函式。

//無實際意義,引數返回值就是賦值

const

intfun1()

;//const int* cur = fun1();

//我們可以把fun2()看成是乙個變數,指標內容不可變

const

int*

fun2()

;//int* const fun3();

//把fun2()看成是乙個變數,指標型別不可變

int*

const

fun3()

;

//傳遞過來的引數在函式內不可以改變(無意義,因為var本身就是形參)

void

fun(

const

int key)

;//引數指標所指向的內容不可變

void

fun(

const

int* cur)

;//引數指標本身不可變(無意義,cur本事是形參)

void

fun(

int*

const cur)

;

const修飾引用引數

//引數為引用,為了增加效率同時防止修改。

void

fun(

const

int& cur)

;

const修飾的引數和普通的傳值是一樣的,他禁止對引用的物件的一切修改,唯一的不同的是按值傳遞會建立乙個類的物件副本,然後傳遞過去,而他是直接傳遞位址過去,增加了效率。

只用引用的const物件可以傳遞乙個臨時物件,因為臨時物件都是const屬性,不可見的,他短時間存在乙個作用域中,所以不能用指標,只用引用的const傳遞可以捕獲物件。

const加在不同的位置有不同的意義: int const cur 和 const int cur沒有區別

難點在於指標前後加const型別的判斷:

int b =

100;

const

int* a =

&b;//1

intconst

*a =

&b;//2

int*

const a =

&b;//3

const

int*

const a =

&b;//4

如果const位於* 的左側,則const修飾的是指標所指向的變數,即指標指向的物件是常量;如果const位於星號的右側,則const修飾的是指標的型別,即指標本身是常量。

因此 1 和 2 情況相同,都是修飾指標所指向的內容,(const在變數宣告符的前後無關),這種情況下不允許對內容進行修改如a = 3。

3 修飾的是指標,指標本身算個常量,而指標指向的內容不是常量,這種情況下不能對指標本身進行修改,這種情況下對指標本身進行更新修改,如a++是錯的。

4 指標本身和指向的內容均為常量。

全文參考:

const關鍵字

const關鍵字總結

被const修飾的變數是不能改變的 const修飾變數時,必須在宣告變數的同時給出初始化 類中的const成員變數不一樣 定義為變數本身是乙個常量,因此對一切的內建型別常量而言,所有的const都是頂層const 對指標來說,常量指標是頂層const,對於引用則沒有頂層const的概念。只在指標和引...

const關鍵字總結

const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的健壯性,另外,在 別人 的時候,清晰理解const所起的作用,對理解對方的程式也有一些幫助。雖然這聽起來很簡單,但實際上,const的使用也是c語言中乙個比較微妙的地方,微妙在何處呢?請看下面幾個問題...

const關鍵字(摘抄 總結)

4.3.4 const關鍵字與指標 4.3.4.1 const修飾指標的4種形式 1 const關鍵字,在c語言用來修飾變數,表示這個變數是常量 2 const修飾指標有4種形式,區分清楚這4種即可全部理解const和指標 第一種 const int p p本身不是const的,而p指向的變數是co...