學(xué)習(xí)C++第四天,在看《c++程序設(shè)計(jì)語言特別版》,昨天看到了指針和常量,一頭霧水,只能這么形容,可能時(shí)間有點(diǎn)晚了,注意力不夠集中了,反正是沒看明白,今天趕緊接上,爭取渡過這個(gè)難關(guān),真別說,靜下心來細(xì)細(xì)的看一會(huì),真的有收獲,怕忘了,趕緊記下,大家看我理解的對(duì)不對(duì)。
《c++程序設(shè)計(jì)語言特別版》5.4.1 指針和常量
“將一個(gè)指針的聲明用const‘預(yù)選固定’將使那個(gè)對(duì)象而不是使這個(gè)指針成為常量”:
理解:一個(gè)指針的聲明,如 char* pc -- pc是指針,加const后 const char* pc = s;,則使pc所指的內(nèi)容s成為常量,pc就成了指向常量的指針
“要將指針本身而不是被指對(duì)象聲明為常量,我們必須使用聲明運(yùn)算符*const”
理解:*const 是運(yùn)算符,可以將指針本身聲明為常量
void f1(char* p)
{
(1) char s[] = "Gorm";
(2) const char* pc = s; //指向常量
(3) pc[3] = 'g'; //錯(cuò)誤:pc是指向常量的
(4) pc = p; //ok
(5) char *const cp = s; //常量指針
(6) cp[3] = 'a'; //ok
(7) cp = p; //錯(cuò)誤:cp是常量指針
(8) const char *const cpc = s; //到const的const指針
(9) cpc[3] = 'a'; //錯(cuò)誤:cpc指向常量
(10) cpc = p; //錯(cuò)誤:cpc本身是常量
}
理解:
(2) char* pc---指針的聲明
const char* pc=s---指s成為常量,pc成為指向常量的指針
(3) pc[3]='g';錯(cuò)誤---原因:pc所指的內(nèi)容已經(jīng)是常量,不能對(duì)p所指的內(nèi)容賦值pc[3]=....相當(dāng)于對(duì)pc所指的內(nèi)容賦值了
(4) pc=p;正確---原因:pc本身并不是常量,是指針,同傳入的參數(shù)p一樣
(5)通過*const,將指針本身變成了常量,故cp是常量指針
(6)cp[3]='a';正確---原因:cp本身是常量,但其所指的內(nèi)容不是常量,故可以對(duì)其所指的內(nèi)容進(jìn)行賦值,cp[3]就是其所指的內(nèi)容
(7)cp=p;錯(cuò)誤---原因:cp本身是常量,不能對(duì)常量進(jìn)行賦值
//如果上面這些都能理解,那面下面這句一看就明白了:)
(8)*const將cpc聲明成了常量指針(cpc是常量,是指針),前面再加一個(gè)const,則cpc所指的內(nèi)容也成了常量(s成了常量),故cpc是指向常量的常量指針(到const的const指針)
(9)(10)不用說了,cpc是常量,其所指的內(nèi)容也是常量,既不能對(duì)其所指的內(nèi)容cpc[3]賦值,也不能對(duì)其本身cpc賦值。
OK,記錄完畢,語言很顯羅嗦,實(shí)是為了明天看時(shí)還能看懂:),有理解不對(duì)的地方,還望指教。
posted on 2007-06-08 22:29
zhanghaibin 閱讀(247)
評(píng)論(1) 編輯 收藏 引用 所屬分類:
學(xué)習(xí)筆記