const型變量和const型指針
const型變量
如果在程序中需要經常使用某一常量,可以使用編譯預處理命令定義符號常量。
eg:#define PI 3.14159
const型變量也是一種定義常量的手段。const型變量是特殊的變量,程序運行過程中不可改變,其他特性和變量一樣。定義const變量時必須初始化。
eg:
const int Max=1000; //int和const位置可以交換。
const常量與符號常量的區別:
1)符號常量由預編譯器處理,const型變量由變量處理。
2)在編譯時符號常量已經不存在了,而const常量依然存在。
3)符號常量的作用域從定義位置開始,到源文件結束,而const型變量和一般變量一樣。
const型指針
1)指向常量的指針
關鍵字const 在最前面。它既可以指向常量,也可以指向變量,但是不能通過它修改它所指向的量。(指針可變,其所指向的內容不可變)
定義格式:const <數據類型> * <指針變量名>;
eg:
const int * p;
const int a=15;
int b;
p=&a; //合法,p指向常量
p=&b; //合法,p指向變量
*p=14; //不合法,不能通過p間接地修改它所指向的量
2)指針常量
關鍵字在指針變量名之前。這種指針,不能改變指針的指向,即指針本身是常量,不允許重新賦值。必須在定義時初始化。(指針不可變,其所指向的內容可變)定義格式:<數據類型> * const <指針變量名>;
eg:
int a,b;
int * const p=&a; //必須初始化
*p=15; //合法,可以通過p間接訪問變量a,給其賦值。
b=*p; //合法,可以取出p所指向的值
p=&b; //不合法,不可以給p重新賦值
3)指向常量的指針常量
定義格式有兩個const。不能通過該指針改變它所指向的量,也不能指針本身指向。
eg:
int a,b;
const int * const p=&a; //初始化
*p=15; //不合法,不能通過p改變它所指向的量
p=&b; //不合法,不可以給p重新賦值
b=*p; //合法,取出p指向的量。
a=8; //合法,a是獨立的,其自身操作特性不受影響
4)快速判斷const指針——看const 的位置。
const int *p; //常量指針,const在int前面
int * const p=&b; //指針常量,const在p前面