一.
二.const型別定義:指明變數或物件的值是不能被更新,引入目的是為了取代預編譯指令
**************常量必須被初始化*************************
cons的作用
(1)可以定義const常量
例如:const int max=100;
int array[max];
(2)便於進行型別檢查
例如:void f(const int i)
編譯器就會知道i是乙個常量,不允許修改;
(3)可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。
還是上面的例子,如果在函式體內修改了i,編譯器就會報錯;
例如:
void f(const int i)
(5) 為函式過載提供了乙個參考。
class a
file://乙個函式
void f(int i) const file://上乙個函式的過載
......
};(6) 可以節省空間,避免不必要的記憶體分配。
例如:#define pi 3.14159
file://常量巨集
const doulbe
pi=3.14159;
file://此時並未將pi放入rom中
......
double i=pi;
file://此時為pi分配記憶體,以後不再分配!
double i=pi;
file://編譯期間進行巨集替換,分配記憶體
double j=pi;
file://沒有記憶體分配
double j=pi;
file://再進行巨集替換,又一次分配記憶體!
const定義常量從彙編的角度來看,只是給出了對應的記憶體位址,而不是象#define一樣給出的是立即數,所以,const定義的常量在程式執行過程中只有乙份拷貝,而#define定義的常量在記憶體中有若干個拷貝。
(7) 提高了效率。
編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為乙個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高。
使用const
(1)修飾一般常量,常陣列,常物件
修飾符const可以用在型別說明符前,也可以用在型別說明符後。
例如:
int const x=2; 或 const int x=2;
int const a[5]=;
或 const int a[5]=;
class a;
const a a;
或 a const a;
(2)修飾指標
const int *a;
或 int const *a; //const修飾指向的物件,a可變,a指向的物件不可變
int *const a;
//const修飾指標a,
a不可變,a指向的物件可變
const int *const a;
//指標a和a指向的物件都不可變
(3)修飾引用
const double & v;
該引用所引用的物件不能被更新
(4)修飾函式的返回值:
const修飾符也可以修飾函式的返回值,是返回值不可被改變,格式如下:
const int fun1();
const myclass fun2();
(5)修飾類的成員函式:
const修飾符也可以修飾類的成員函式,格式如下:
class classname
;這樣,在呼叫函式fun時就不能修改類裡面的資料
(6)在另一連線檔案中引用const常量
extern const int i;
//正確的引用
extern const int j=10;
//錯誤!常量不可以被再次賦值
C const使用總結
這裡針對c 中const的一些一般用法進行一下簡單的總結 常量不可修改 const int val 5 int const val 5 與 define巨集定義常量的區別 1 const常量具有型別,編譯器可以進行安全檢查 define巨集定義沒有資料型別,只是簡單的字串替換,不能進行安全檢查。2 ...
C const用法總結
const名叫常量限定符,用來限定特定變數,以通知編譯器該變數是不可修改的。使用const,可以避免在函式中對某些不應修改的變數造成可能的改動。非const 變數預設為extern,這樣就不可以被程式其它檔案訪問,要想const變數能夠被在其他的檔案中訪問,必須顯式地指定它為extern,如exte...
c const用法總結
看了好多博主寫的關於const的總結,總是仁者見仁,智者見智,好多博主都多多少少的有一些錯誤,在這總結一下c const的用法,我的文章中也可能會有錯誤,望指正!一.定義常量 1 const修飾變數 int const a 5 const int a 5 這兩種定義方法是一樣的,都是不希望a的值發生...