C++中,指向常量的指標和常量型指標很容易搞混和記錯,為了記憶,今天特此記錄下來,以便以后查看,
1. 指向常量的指標(point to const):
(1)定義:通常是指向常量的指標,也就是指標指向的內容是個常量,
(2)格式:定義格式例如:const double * ptr 或者double const * ptr形式,樣例代碼如下:
(3)特點:指標所指內容不可更改,指標地址可以更改
const double pi1 = 3.14; //pi1是個常量,它的值不能改變 const double pi2 = 3.1415; //pi2是個常量,它的值不能改變 double* ptr = &pi1; //錯誤:ptr作為普通指標,不能被初始化為一個指向常量的指標, const double* ptrpi1 = &pi1; //正確:ptrpi1指向了常量pi1 double const* ptrpi2 = &pi1; //正確:ptrpi2指向了常量pi1 ptrpi1 = &pi2; //正確:常量指標的指標地址可以更改 *ptrpi1 = 3.1415; //錯誤:不能修改指標所指內容的值,
2. 常量型指標 (const point):
(1)定義:通常就是指指標本身存放的地址是常量,地址所指的內容未做限定,
(2)格式:例如:double * const ptr
(3)特點:a. 指標本身地址不可更改,指標所指內容可以更改
b. 必須定義時初始化,初始化之后,不能修改
double price = 0.5; double* const ptrPrice = &price; //ptrPrice將一直指向price,指標地址不能修改 *ptrPrice = 0.7; //正確:指標的所指的內容可以修改
3. 如果想定義一個所指內容和指標地址都不能修改的指標變數怎么定義呢?
const double pi = 3.14; const double* const ccpi = π //ccpi是一個指向了常量內容的常量型指標,
4. 規律與總結
const在不同的位置,代表的意思就不同,很容易搞混,那么有沒有有規律的辦法來理解和記憶呢?有,這就是從右向左或逆序理解法,就是從指標變數名開始,最靠近變數名的符號影響變數本身的型別,其余部分,確定著變數所指向內容的型別,
例如: 第3個例子中,最靠近ccpi的是const,那么就是說ccpi本身是個常量,緊接著是*,說明,ccpi是個常量型指標,double就是這個指標常量所指內容是double型別,最左邊的const就是說指標常量所指內容就是double型別的常量值,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/6534.html
標籤:C++
上一篇:C++的逗號運算子
