給內(nèi)存中的數(shù)據(jù)加寫保護(hù)的方法是在聲明指針時(shí),在指針類型(即各種數(shù)據(jù)類型)前加上const,表示這些數(shù)據(jù)是常量,只能讀不能寫。比如:const int *iptr;,這時(shí)候我們只能夠通過指針iptr讀出內(nèi)存里的數(shù)據(jù),但是不能對(duì)其寫入、修改。
下面我們來看一段程序,實(shí)踐一下指針常量和常量指針:(程序8.4) #include "iostream.h" int main() { int a=42; const int b=84; const int *captr=&a;//常量指針 int * const acptr=&a;//指針常量 int *bptr=&b;//錯(cuò)誤,不能把常量的地址給指針變量 const int *cbprt=&b;//把常量的地址給常量指針是允許的 *captr=68;//錯(cuò)誤,間接引用常量指針不可修改內(nèi)存中的數(shù)據(jù) *acptr=68;//間接引用指針常量可以修改內(nèi)存中的數(shù)據(jù) captr=&b;//常量指針可以指向其他變量 acptr=&b;//錯(cuò)誤,指針常量不能指向別的變量 const int * const ccaptr=&a;//常量指針常量,既不能間接引用修改數(shù)據(jù),也不能指向別的變量或常量 *ccaptr=68;//錯(cuò)誤,不能間接引用修改數(shù)據(jù) ccaptr=&b;//錯(cuò)誤,不能指向別的常量或變量 return 0; } 以上程序存在錯(cuò)誤,無法通過編譯。我們考慮到使用指針的安全性的時(shí)候,就能想到要使用以上這些保護(hù)措施保護(hù)內(nèi)存中的數(shù)據(jù)。