1. 程式人生 > >修改const指標所指向的值

修改const指標所指向的值

dval  =  3.14159;

*cptr = 3.14159;//錯誤  cptr是一個指向const的指標

double  *ptr  =  &dval;//正確ptr指向非const物件

*ptr  = 2.72;//正確

cout << *cptr;

指向const的指標cptr實際上指向了一個非const物件。儘管它所指向物件非const,但仍然不能使用cptr修改該物件的值,系統會把它所指的所有物件都視為const;

如果指向const的指標所指的物件並非const,則可直接給該物件賦值或間接地利用普通的非const指標修改其值,畢竟這個值不是const。

注:不能保證指向const的指標所指的物件的值一定不可修改。

在實際程式中,指向const的指標常用作函式的形參。將形參定義為指向const的指標,以此確保傳遞給函式的實際物件在函式中不因為形參而被改變。

除了指向const物件的指標外,C++還提供了const指標--本身值不能修改。

int  errNumb  =  0;

int  *const  curErr  = &errNum;  //curErr是指向int型物件的const指標

const指標的值不能修改,意味著不能使curErr指向其他物件。任何企圖給const指標賦值的行為(即使給curErr賦回同樣的值)都會導致編譯時的錯誤

於任何const量一樣,const指標也必須在定義時初始化。

指標本身是const,該指標所指向物件的值能否修改完全取決於該物件的型別。