修改const指標所指向的值
阿新 • • 發佈:2019-01-30
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,該指標所指向物件的值能否修改完全取決於該物件的型別。