const與指標:指向const的指標與const指標
阿新 • • 發佈:2018-12-15
指標,可以說是C語言程式設計的掌上明珠,而將const應用於指標,會產生一些挺微妙的現象。
指向const的指標
第一種用法是令指標指向一個常量,稱之為指向const的指標,可以防止使用該指標修改所指向物件的值;
int age=40;
const int *pt=&age;
則該宣告指出,pt指向了一個const int,因此不能使用pt來修改age的值。然而實際上age並不是一個常量,可以直接通過age變數來修改其值,只是不能通過pt來修改它的值。 注意:禁止將const變數的地址賦給常規指標,因為這樣做意味著可以通過常規指標修改const變數的值,這一點使得const狀態很荒謬,只能將const變數的地址賦給指向const的指標。
在函式中使用指標引數時,儘量使用const,將其宣告為指向常量的指標,原因有兩點: 1。這樣可以避免由於無意間修改資料而導致的程式設計錯誤; 2。使用const使得函式能夠處理const和非const實參,否則將只能接受非const資料。
const指標
第二種用法是將指標本身宣告為一個常量,稱之為const指標,這樣可以防止改變指標指向的位置;
int age=40;
int *const pt1=&age;
可以看出,這裡的const的位置與上述有所不同,這種宣告方式使得pt1只能指向age,而不能再指向其他變數,但是允許使用pt1去修改age的值,也就是說pt1是常量,其值不能修改,而*pt1的值是age,不是常量,可以修改。 注意:用指標指向指標,情況將更加複雜,需要仔細判斷。