天天看點

C語言中const關鍵字

C語言中const關鍵字是constant的縮寫,通常翻譯為常量、常數等,有些朋友一看到const關鍵字馬上就想到了常量。事實上在C語言中const功能很強大,它可以修飾變量、數組、指針、函數參數等。本文将針對上述幾種修飾功能詳細做一個總結。

1、 修飾變量:

C語言中采用const修飾變量,功能是對變量聲明為隻讀特性,并保護變量值以防被修改。舉例說明如下:

const int i = 5;

上面這個例子表明,變量i具有隻讀特性,不能夠被更改;若想對i重新指派,如i = 10;則是錯誤的。

值得注意的是,定義變量的同時,必須初始化。定義形式也可以寫成int const i=5,同樣正确。

此外,const修飾變量還起到了節約空間的目的,通常編譯器并不給普通const隻讀變量配置設定空間,而是将它們儲存到符号表中,無需讀寫記憶體操作,程式執行效率也會提高。

2、 修飾數組

C語言中const還可以修飾數組,舉例如下:

const int array[5] = {1,2,3,4,5};

array[0] = array[0]+1; //錯誤

數組元素與變量類似,具有隻讀屬性,不能被更改;一旦更改,如程式将會報錯。

3、 修飾指針

C語言中const修飾指針要特别注意,共有兩種形式,一種是用來限定指向空間的值不能修改;另一種是限定指針不可更改。舉例說明如下:

int i = 5;

int j = 6;

int k = 7;

const int * p1 = &i; //定義1

int * const p2 =&j; //定義2

上面定義了兩個指針p1和p2。

在定義1中const限定的是*p1,即其指向空間的值不可改變,若改變其指向空間的值如*p1=20,則程式會報錯;但p1的值是可以改變的,對p1重新指派如p1=&k是沒有任何問題的。

在定義2中const限定的是指針p2,若改變p2的值如p2=&k,程式将會報錯;但*p2,即其所指向空間的值可以改變,如*p2=80是沒有問題的,程式正常執行。

4、 修飾函數參數

const關鍵字修飾函數參數,對參數起限定作用,防止其在函數内部被修改。所限定的函數參數可以是普通變量,也可以是指針變量。舉例如下:

void fun1(const int i)

{

其它語句

……

i++; //對i的值進行了修改,程式報錯

其它語句

}

void fun2(const int *p)

{

其它語句

……

(*p)++; //對p指向空間的值進行了修改,程式報錯

其它語句

}