對於指標應用const的理解

2021-08-13 20:04:06 字數 1129 閱讀 4792

在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...