??? 使用一個指針時,涉及到兩個對象:該指針本身和被它所指的對象。將一個指針的聲明用const“預先固定”,將使那個對象而不是這個指針成為常量,要使指針而不是被指的那個對象成為常量,我們必須使用聲明運算符*const。
??? void f(char* p)
{
???char s[]="Gorm";
???
?? const char* pc=s;?? //指向常量
???pc[3]='g';?????????????? //錯誤,pc是指向常量的
???pc=p;??????????????????? ?//???ok
???
???char* const cp=s;?? //常量指針
?? cp[2]='c';?????????????? //ok
?? cp=p;?????????????????????//cp是常量指針
?? const char* const cpc=s;? //指向常量的常量指針
?? cpc[2]='g';?????????????????????? //錯誤,cpc指向常量
?? cpc=p;??????????????????????????? //錯誤,cpc是常量指針
}
???? 定義常量指針的聲明運算符是*const,沒有const*聲明符,所以出現(xiàn)在*之前的const是作為基礎類型的一部分。
??? 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)
評論(0) 編輯 收藏 引用 所屬分類:
編程語言——C++