1. 程式人生 > >const int a; int const a; const int * a; int * const a; int const * const; 之間的區別

const int a; int const a; const int * a; int * const a; int const * const; 之間的區別

const int a; int const a; const int * a; int * const a; int const * const; 之間的區別

 

const int a; int const a; 這兩個寫法是等同的,表示一個是一個INT常量。

const int * a; 表示a是一個指標,可以任意指向int常量或者int變數,它總是把它所指向的目標當作一個int常量。也可以寫成int const * a;含義相同。

int * const a; 表示一個是一個指標常量,初始化的時候必須固定指向一個INT變數,之後就不能再指向別的地方了。

int const * a const;這個寫法沒有,倒是可以寫成int const * const a;表示a是一個指標常量,初始化的時候必須固定指向一個int常量或者int變數,之後就不能指向別的地方了,總是把它所指向的目標當作一個int常量。也可以寫成const int * const a;含義相同。

關於常量的點滴補充:

  1,常量物件的地址只能賦值給指向常量物件的指標

  2,指向常量物件的指標可以被賦值為一個非常量物件的地址 

  3,指向常量得指標常被用函式的形式引數,保證被傳遞給函式的實際物件在函式中得到實際物件在函式中不會被修改

  4,常量在定義後就不能被修改,所以它必須被初始化。未初始化的常量定義將導致編譯錯誤(上面都是在說明常量得問題,所以沒有賦值,實際語句中要賦值的)