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指向空間的值進行了修改,程式報錯
其它語句
}