? ? ? ? const來源于英文單詞constant英染,即不變的意思被饿,可用于修飾變量,希望將變量變成“常量”闪金。例如 int const a=10;如果調用語句a=12囱嫩;編譯時會報錯墨闲,提示a是常量郑口,不可修改。程序中為什么要用const?主要還是基于這樣一種需求:針對一些特定數(shù)值瞻离,希望在整個程序運行過程中不可改變仔夺,否則導致運行結果出現(xiàn)錯誤。一般而言日裙,有兩種解決方式:一是直接在程序中使用這些數(shù)值昂拂,但不免顯得麻煩,因為需要修改時抛猖,全部需要修改格侯;二是定義一個個變量存放不希望改變的數(shù)值,但這需要程序員在以后調用該變量時都要小心翼翼财著,不能改變變量的值联四。然而人都會有犯錯的時候,為了確保變量的安全性就會考慮的到使用const機制撑教,這樣一旦無意修改變量朝墩,編譯器則主動報錯。
? ? ? ? 然而伟姐,當程序中使用const去修飾一個變量時收苏,對于它能百分百可靠地保證不改變變量的值時,我們依然應當保持小心謹慎愤兵,因為它并不是安全可靠的鹿霸,只是編譯器為它穿上一件馬甲而已。換句話說const機制是通過編譯器檢查實現(xiàn)的秆乳,程序在真正運行過程中懦鼠,并不關心變量是否被const限定了,只要保證編譯通過,在程序運行時葛闷,仍可任性修改的憋槐。例如阳仔,int const a=10;int *p=(int *)&a评矩;*p=100;運行之后可以發(fā)現(xiàn)蔗喂,盡管a已被修飾為const散址,但值變成了100瞪浸!因為const只是說明a不能被修改,并沒有說a的地址不可以被引用,所以只要變量的地址存在被引用的可能,const修飾的變量還是可以被間接修改的!如果希望例子中的a不能修改递胧,可以將p的值修改為int const *p;以表示p所指向的內存的內容不可通過p修改联喘,這也不失為一種解決辦法。