some cases about "const" in C Program

關鍵字const並不能把變量變成常量!在一個符號前加上const限定符只是表示這個符號不能被賦值。也就是它的值對於這個符號來說是隻讀的,但它並不能防止通過程序的內部(甚至是外部)的方法來修改這個值。const最有用之處就是用它來限定函數的形參,這樣該函數將不會修改實參指針所指的數據,但其他的函數卻可能會修改它,這也許就是C和C++中const最一般的用法。---------〈C專家編程〉
const 在C中的真正含義是“readonly“,即,表示所限定的變量只可讀,它並不表示“純正”的常量!所以不能用它所限定的變量來定義數組。
例如:
const int x= 10;
char ch[x];    //error!

C中的指針有四種:
(1) type *p;
(2) type const *p;
(3) type *const p;
(4) type const * const p;
其中,type爲任何一個數據類型,假設爲int吧。

第一種指針是指向變量數據的變量指針,
指針的地址可以改變,其指針指向的內容也可以改變;
第二種指針是指向常量數據的變量指針,
指針的地址可以改變,但其指向的內容不允許改變;

第三種指針是指向變量數據的常量指針,
指針的地址不允許改變,但其指向的內容可以改變;
第四種指針是指向常量數據的常量指針,
指針的地址不允許改變,其指向的內容也不可以改變。

舉例說明如下:
(1)const int *p 也就是:  int const* p;
表示p是一個指向常整型數據的指針,該指針的地址可以改變,即可以指向其它的變量,但不能通過引用該指針而改變其指向的內容。

如:
int ix = 12;
const int *p = &ix;
則下列語句:
p = &iy;         // true
*p = 13;       //ERROR
(2) int * const p;
表示p指針不能改變,即p存放的地址值不能改變,但p指向的變量的值可以變。
如:
int ix = 12;
int * const p = &ix;
則下列語句:
p = &iy;      //ERROR
*p = 13;    //true
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章