在c和c++語言中,在定義乙個變數時使用const,指示其值不能再被改變。
在函式宣告中使用const定義傳入的指標引數,在函式中便不能更改其值,但是對於實參,並不要求其一定是const引數。也就是說,使用const使得函式能夠處理const和非const實參 ,否則將只能接受非const實參,因此建議將指標行參宣告為指向const的指標。
當const用於指標時,存在不中不同的應用情況,const的位置不同,所出現的效果將會不同。
1.
int
data = 34;
const int *ptr = &data;
對於這種情況,不能通過*ptr修改data的值,*ptr = 100;是非法的操作。
但是可以修改ptr的位址,也就是說 ptr = &newdata; 是正確的。
但是可以通過data = 100;修改其值。
2.
int
data = 34;
int * const ptr = &data;
對於這種情況,可以通過*ptr修改data的值,*ptr = 100;是正確的操作。
但是不可以修改ptr的位址,也就是說 ptr = &newdata; 是非法的。
3.
int data = 34;
const
int * const ptr = &data;
對於這種情況,既不可以通過*ptr修改data的值, 也不可以修改ptr的位址。
上述為常規變數的位址賦給指向const的指標。
還有兩種情況。
將const變數的位址賦給指向const的指標。這種情況是沒什麼問題的,在這裡不可以通過data和*ptr修改其值。兩者都為const變數。
const
int data = 34;
const
int * ptr = &data;
將const變數的位址賦給非const的指標。這種操作是非法的,由於data為常量,如果可以通過*ptr修改了data的值,將是很荒謬的。
const int data = 34;
int * ptr = &data;
對於指標的理解
就是記憶體中間開闢了一塊區域存放資料的位址,這個位址就叫做指標 指標的定義服從必須的格式 整型資料 int p a 陣列 int p arr 這樣就使得p存放了資料的位址 可以理解為p 0x0000 當涉及到指標與函式的時候 includeusing namespace std void swap0...
const指標的理解
有點複雜啊,一系列const組合起來。看的人頭都大了!但總的來說,想要存放常量物件的位址,只能使用指向常量的指標 const double pi 3.14 pi是個常量,它的值不能改變 double ptr pi 錯誤 ptr是乙個普通指標 const double cptr 正確 cptr可以指向...
對於各種指標的理解
在定義指標變數時,用 type 的方式 例如 int p char ch 說明一點,和變數名沒關係,也可以寫成如下風格,單獨的p和ch叫做指標變數 int p char ch 乙個指標只能指向與它型別相同的型別 如下 int a 0 int p a char ch a char q ch int p...