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 預編譯...