快速理解const在c語言中的用法
一、修飾區域性變數
使變數a的值不能被改變:
const int a=2;
int const a=2;
const修飾變數時,一定要給變數初始化,否則之後就不能再進行賦值了。
接下來看看const用於修飾常量靜態字串,例如:
const char* str=「abcdef」;
分析如果不用const的修飾,稍不注意我們使用str[1]=』g』這樣的語句,對唯讀區域寫,程式會立刻異常終止。有了const,這個錯誤就能在程式被編譯的時候就立即檢查出來。
二、修飾全域性變數
全域性變數的作用域是整個檔案,一旦被修改很容易出bug,使用const修飾可防止不必要的人為修改,使用的方法與區域性變數是相同的。
三、定義常量指標與指標常量
1、常量指標是指標指向的內容是常量,可以有一下兩種定義方式。
const int * n;
常量指標說的是不能通過這個指標改變變數的值,但是還是可以通過其他的引用來改變變數的值的。
int const * n;
常量指標指向的值不能改變,但是這並不是意味著指標本身不能改變,常量指標可以指向其他的位址。
2、指標常量是指指標本身是個常量,不能在指向其他的位址,寫法如下:
int *const n;
需要注意的是,指標常量指向的位址不能改變,但是位址中儲存的數值是可以改變的,可以通過其他指向改位址的指標來修改。
int a=5;
int p=&a;
int const n=&a;
*p=8;
區分常量指標和指標常量的關鍵就在於星號的位置
3、指向常量的常指標
是以上兩種的結合,指標指向的位置不能改變並且也不能通過這個指標改變變數的值,但是依然可以通過其他的普通指標改變變數的值。
const int* const p;
四、修飾函式的引數
根據常量指標與指標常量,const修飾函式的引數也是分為三種情況
1、防止修改指標指向的內容
void stringcopy(char *strdestination, const char *strsource);
其中 strsource 是輸入引數,strdestination 是輸出引數。給 strsource 加上 const 修飾後,如果函式體內的語句試圖改動 strsource 的內容,編譯器將指出錯誤。
2、防止修改指標指向的位址
void swap ( int * const p1 , int * const p2 )
指標p1和指標p2指向的位址都不能修改。
3、以上兩種的結合。
五、修飾函式的返回值
如果給以「指標傳遞」方式的函式返回值加 const 修飾,那麼函式返回值(即指標)的內容不能被修改,該返回值只能被賦給加const 修飾的同型別指標。
例如函式
const char * getbit(void);
如下語句將出現編譯錯誤:
char *str = getbit();
正確的用法是
const char *str = getbit();
C語言中對const的理解
const的作用是限定乙個變數不能被修改。對const的理解 1 int const a const int b 這兩句是相等的。2 const char p1 char const p2 const char const p3 第一句的意思是指標p1所指向的記憶體空間不能被修改,如 p1 1 a ...
const在C語言中的用法
const作用 防止定義的變數被修改 1 用於修飾變數 const int a 10 合法 int const b 10 合法,等價const int 10 const int c 非法 int const d 非法 注意 必須有初始值 2 用於修飾指標 const修飾的 sp,所以sp指標指向的位...
const在C語言中的用法
在c語言中,const修飾的變數具有常屬性,不可以修改它的值。例如 const int num 10 int const num 10 變數num的值不可以被改變 但是它又和變數有一些區別,例如 define line 10 const int num 10 雖然它們的值都是10,而且都不能改變,但...