當程式中遇到常量時:
如果程式複雜,用到的常量比較多的化,不能很簡單的看出某個常量時用來做什麼的。
在實際中應該盡量避免產生這種magic number,可以使用c語言提供的預定義功能
# define pi 3.14
auto f(
double radius)
;
預定義有自己的侷限(比如不能進行型別檢查)
更好的工具是const關鍵字,它的作用是定義乙個常量
對於c風格的字串,它是用char陣列來儲存的。對於乙個字串常量可以這樣定義:
char
* str =
"hello"
;
不能修改hello若是不小心寫下*str[2]=『x』;*這樣的語句,會導致對唯讀記憶體區域的賦值,然後程式會立刻異常終止。
所以對於字串常量,應使用const關鍵字來進行修飾。
const
char
*char
="hello"
;
加了const之後,這個錯誤在編譯階段就能被檢查出來,不會再等到實際執行的時候才出問題。
const
int* n;
intconst
* n;
需要注意以下兩點:
常量指標說的是不能通過這個指標改變變數的值,但是可以通過其他的引用來改變變數的值。常量指標指向的值不能改變,但是並不意味著指標本身不能改變,常量指標可以指向其他的位址
int
*const n = address;
指標常量指向的位址不能改變,但是可以通過指標常量,來改變指標所指向的變數的值:
int a=5;
int*
const n =
&a;*n =
8;
可以這樣考慮:
將星號讀作指標,將const讀作常量,從左往右讀內容正好與之相符。
C C ,常物件 保護共享資料
定義常物件的作用是為了保證該物件中資料成員的值不能被修改。定義常物件的一般形式為 類名 const 物件名 實參表 或者 const 類名 物件名 實參表 include using namespace std class student void change int n,float s void...
資料共享與保護
作用域 是識別符號的有效範圍 可見性 識別符號是否可以引用的問題 程式執行到某一點。能夠引用到的識別符號,就是該處可見的識別符號。函式原型的作用域 函式原型中的引數,其作用域始於 結束於 例如,設有下列原型宣告 double area double radius radius 的作用域僅在於此,不能...
資料的共享與保護
1.生存期 1 靜態生存期 定義 若物件的生存期與程式的執行期相同,則稱它具有靜態生存期 方式 使用關鍵字static 在命名空間作用域宣告的物件都具有靜態生存期 2 動態生存期 區域性生存期物件誕生於宣告點,結束於宣告所在的塊執行完畢之時。例 變數的生存期與可見性 include using na...