問題描述:以下幾個const的用法,其含義分別是什麼呢?
const char *p ;
const (char *) p ;
char* const p ;
(char*) const p ;
const char* const p ;
1.const 修飾成員變數
const修飾指標變數時:
只有乙個const,如果const位於*左側,例如:
const
int* p=
&i;*p=26;
//error! (*p)是const
i=26
;//ok
p=&j;
//ok
這種寫法表示指標所指資料是常量,不能通過解引用修改該資料;指標本身是變數,可以指向其他的記憶體單元。也就是說,這個const不能讓變數i成為const常量,不能通過這個指標p去修改變數i,但是p可以修改(p=&j等),i也可以修改(如i++;i=其他值等)。
只有乙個const,如果const位於*右側,例如:
int
*const q =
&i;//q是const
*q =26;
//ok
q++;
//error!
這種寫法表示指標q本身是常量,不能指向其他記憶體位址,q所指向的位址不能修改!但是指標所指的資料可以通過解引用修改。
(3)兩個const,*左右各乙個,表示指標和指標所指資料都不能修改,例如:
int
const
*const p =
&i;///const data,const pointer
那麼一下三種寫法分別是什麼意思呢?
const int * p = &i;
int const * p = &i;
int * const p = &i;
這裡面只有兩中意思:要麼是指標不可修改,要麼是不可通過指標修改。判斷方法:
看const在*的前面還是後面。
所以前兩種寫法含義相同。
c語言中的const的作用及解析
有時候我們希望定義這樣一種變數,它的值不能被改變,在整個作用域中都保持固定。例如,用乙個變數來表示班級的最大人數,或者表示緩衝區的大小。為了滿足這一要求,可以使用const關鍵字對變數加以限定 const int maxnum 100 班級的最大人數 這樣 maxnum 的值就不能被修改了,任何對 ...
C語言中const用法解析
const修飾的變數儲存位置,和不用const修飾的沒區別!關鍵字const用來定義常量,如果乙個變數被const修飾,那麼它的值就不能再被改變,我想一定有人有這樣的疑問,c語言中不是有 define嗎,幹嘛還要用const呢,我想事物的存在一定有它自己的道理,所以說const的存在一定有它的合理性...
C語言中的const
c語言的中的const,代表的含義是 不可改變的變數 或者可以成為 偽常量 c 中 const,被稱為 乙個有型別描述的常量 const int liv num 10 liv num 18 error 因為liv num 被const修飾不可被直接賦值 那麼,我為什麼說是 偽常量 我們知道在c中給變...