const在C語言中的用法

2021-07-03 19:26:00 字數 1456 閱讀 6852

const作用:防止定義的變數被修改

1、用於修飾變數

const int a=10;//合法

int const b=10;/合法,等價const int =10;

const int c;//非法

int const d;//非法

注意:必須有初始值

2、用於修飾指標

const修飾的*sp,所以sp指標指向的位址可以改變,但是*sp執行的內容不可改變

第一:const int *sp//指標可變,指向內容不可變

int const *sp//指標可變,指向內容不可變

int temp=10;

int temp2=70;

const int *sp=&temp;//

sp=&temp2;//合法,修改指標

*sp=300;//非法,如果定義指標用int *sp=&temp;方式則合法

const修飾的*sp,所以sp指標指向的位址可以改變,但是*sp執行的內容不可改變

第二種:int *const sp//指標不可變,指向的內容可變

例如:int temp=10;

int temp2=70;

int  *const sp=&temp;

// sp=&temp2;//不合法,指標不可變,指向內容可以改變

*sp=300;//合法,

printf("*p=%d",temp);//結果為300

第四種:

const int *const sp//sonst即指標不可變、指向的變數也不可改變

3、修飾函式形參

void func(const int &num)//防止按位址傳入的原始資料被修改

補充:既然怕修改為啥不直接使用按變數方式傳遞

4、修飾函式返回值

例如:const int func();

則接受的值也需要使用const 限定

const int a=func();//正確

int a=func();//錯誤

5. 可以避免不必要的記憶體分配 

#define string "abcdefghijklmn\n" 

const char string="abcdefghijklm\n"; 

... 

printf(string);  //為string分配了第一次記憶體 

printf(string);  //為string一次分配了記憶體,以後不再分配 

... 

printf(string);  //為string分配了第二次記憶體 

printf(string); 

... 

由於const定義常量從彙編的角度來看,只是給出了對應的記憶體位址, 

而不是象#define一樣給出的是立即數,所以,const定義的常量在 

程式執行過程中只有乙份拷貝,而#define定義的常量在記憶體中有 

若干個拷貝。 

const在C語言中的用法

在c語言中,const修飾的變數具有常屬性,不可以修改它的值。例如 const int num 10 int const num 10 變數num的值不可以被改變 但是它又和變數有一些區別,例如 define line 10 const int num 10 雖然它們的值都是10,而且都不能改變,但...

C語言中const的用法

1 const的普通用法 const int n 10 意思很明顯,n是乙個唯讀變數,程式不可以直接修改其值。這裡還有乙個問題需要注意,即如下使用 int a n 在ansi c中,這種寫法是錯誤的,因為陣列的大小應該是個常量,而n只是乙個變數。2 const用於指標 const int p int...

C語言中const的用法

關鍵字const用來定義常量,如果乙個變數被const修飾,那麼它的值就不能再被改變,我想一定有人有這樣的疑問,c語言中不是有 define嗎,幹嘛還要用const呢,我想事物的存在一定有它自己的道理,所以說const的存在一定有它的合理性,與預編譯指令相比,const修飾符有以下的優點 1 預編譯...