1.常量指針 定義:具有只能夠讀取內存中數據,卻不能夠修改內存中數據的屬性的指針,稱為指向常量的指針,簡稱常量指針。 聲明:const int * p; 注:可以將一個常量的地址賦值給一個對應類型的常量指針,因為常量指針不能夠通過指針修改內粗數據。只能防止通過指針引用修改內存中的數據,並不保護指針所指向的對象。 2.指針常量 定義:指針常量是指指針所指向的位置不能改變,即指針本身是一個常量,但是指針所指向的內容可以改變。 聲明:int const * p=&a; 注:指針常量必須在聲明的同時對其初始化,不允許先聲明一個指針常量隨後再對其賦值,這和聲明一般的常量是一樣的。 3.示例
int _tmain(int argc, _TCHAR* argv[]) { //定義變量 int a=1; //定義常量 const int b=2; //定義常量指針 const int *ptr1=&a; //定義指針常量,必須賦值 int* const ptr2=&a; //錯誤,不能把常量的地址賦給指針變量 int *ptr3=&b; //正確,可以把常量的地址賦給常量指針 const int* ptr4=&b; //錯誤,間接引用常量指針不可以修改內存中的數據 *ptr1=3; //正確,間接引用指針常量可以修改內存中的數據 *ptr2=4; //正確,常量指針可以指向其他變量 ptr1=&b; //錯誤,指針常量不可以指向其他變量 ptr2=&b; //常量指針常量,即不可以間接引用修改內存數據,也不可以指向別的變量 const int * const ptr5=&a; //錯誤,不可以間接引用修改內存數據 *ptr5=5; //錯誤,不可以修改指向的對象 ptr5=&b; return 0; }