??? 使用一個(gè)指針時(shí),涉及到兩個(gè)對(duì)象:該指針本身和被它所指的對(duì)象。將一個(gè)指針的聲明用const“預(yù)先固定”,將使那個(gè)對(duì)象而不是這個(gè)指針成為常量,要使指針而不是被指的那個(gè)對(duì)象成為常量,我們必須使用聲明運(yùn)算符*const。
??? void f(char* p)
{
???char s[]="Gorm";
???
?? const char* pc=s;?? //指向常量
???pc[3]='g';?????????????? //錯(cuò)誤,pc是指向常量的
???pc=p;??????????????????? ?//???ok
???
???char* const cp=s;?? //常量指針
?? cp[2]='c';?????????????? //ok
?? cp=p;?????????????????????//cp是常量指針
?? const char* const cpc=s;? //指向常量的常量指針
?? cpc[2]='g';?????????????????????? //錯(cuò)誤,cpc指向常量
?? cpc=p;??????????????????????????? //錯(cuò)誤,cpc是常量指針
}
???? 定義常量指針的聲明運(yùn)算符是*const,沒(méi)有const*聲明符,所以出現(xiàn)在*之前的const是作為基礎(chǔ)類(lèi)型的一部分。
??? char* const cp;?? //到char的const指針
??? const char* pc;???//到const char的指針
??? char const* pc2;? //到const char的指針
??? 有人發(fā)現(xiàn)從右向左讀這樣的定義是有幫助的。例如:cp is a const pointer to char and pc is a pointer to const char。
posted on 2007-01-15 10:45
探丫頭 閱讀(282)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
編程語(yǔ)言——C++