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;
}