1敌蚜、常量指針
定義:只能讀取內(nèi)存中數(shù)據(jù)接谨,不能修改內(nèi)存中數(shù)據(jù)的指針蛇尚。稱為指向常量的指針芽唇,簡(jiǎn)稱常量指針
聲明:const int *p;? ?int const *p;
2、指針常量
定義:指針指向的位置不能變取劫,即指針本身是一個(gè)常量匆笤,但指針指向的內(nèi)容可以變
聲明:int * const p = &a;
注:指針常量必須在聲明的時(shí)候?qū)ζ涑跏蓟新拢辉试S先聲明一個(gè)指針常量再對(duì)其賦值
3、示例
int a = 1; 定義變量
const int b = 2; 定義常量
const int *ptr1 = &a; 定義常量指針
int * const ptr2 = &a炮捧;定義指針常量
int *ptr3=&b;? 錯(cuò)誤庶诡,?不能把常量的地址賦給指針變量
const int* ptr4=&b; 正確,可以把常量的地址賦給常量指針
*ptr1=3; 錯(cuò)誤咆课,間接引用常量指針不可以修改內(nèi)存中的數(shù)據(jù)
*ptr2=4;? 正確末誓,間接引用指針常量可以修改內(nèi)存中的數(shù)據(jù)
ptr1=&b;? 正確,常量指針可以指向其他變量
ptr2=&b;? 錯(cuò)誤傀蚌,指針常量不可以指向其他變量
const int * const ptr5=&a;??常量指針常量基显,即不可以間接引用修改內(nèi)存數(shù)據(jù)蘸吓,也不可以指向別的變量
*ptr5=5;? 錯(cuò)誤善炫,不可以間接引用修改內(nèi)存數(shù)據(jù)
ptr5=&b; 錯(cuò)誤,不可以修改指向的對(duì)象