const int *p 無(wú)法改變值的問(wèn)題
老師在這堂課上講無(wú)法通過(guò)這樣的方式進(jìn)行值的改變,是為什么呢?
int i=30;
const int *p=i;
*p=50;//這里是不可以的,
i=50;//這里卻是可以的,這是為什么呢?不是說(shuō)*p所指向的值無(wú)法修改嗎?
老師在這堂課上講無(wú)法通過(guò)這樣的方式進(jìn)行值的改變,是為什么呢?
int i=30;
const int *p=i;
*p=50;//這里是不可以的,
i=50;//這里卻是可以的,這是為什么呢?不是說(shuō)*p所指向的值無(wú)法修改嗎?
2015-07-09
舉報(bào)
2015-07-10
你要理解變量類(lèi)型的重要性。
p的類(lèi)型是指向const int的指針,如果你解引用這個(gè)指針的話,得到的會(huì)是const int類(lèi)型。p的類(lèi)型決定了這樣的性質(zhì),這性質(zhì)與p到底指向誰(shuí)是無(wú)關(guān)的。
所以即使p指向的是個(gè)非const的int對(duì)象,但如果你通過(guò)p來(lái)訪問(wèn)所指的內(nèi)容的話,這內(nèi)容還是會(huì)被當(dāng)作const的。就是說(shuō)你無(wú)法通過(guò)*p來(lái)修改它,所謂的“*p的值無(wú)法修改”就是這個(gè)意思。
當(dāng)然 i 本身是普通的int,自然可以通過(guò) i 來(lái)任意修改了。
故const int指針可以指向const int對(duì)象,也可以指向普通的int對(duì)象。雖然普通int可以被修改,但不修改它自然也沒(méi)什么問(wèn)題??煞粗胀╥nt指針就只能指向普通的int對(duì)象。如果它能夠指向const int的話,就意味著你可以通過(guò)這個(gè)指針來(lái)修改所指的const int的內(nèi)容,這顯然是不合理的。