快速理解const在C語言中的用法

2021-09-14 03:41:03 字數 1563 閱讀 6059

快速理解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,而且都不能改變,但...