初了解,const是在c語言中為了提高程式的安全性和可靠性而用來修飾資料型別的,const修飾的資料型別是指常型別,常型別的變數或物件的值是不能被更新的,即相當於限定為「唯讀」的狀態。
即指向常量的指標,該指標所指向的是乙個常量,常量的值不能通過解引用來改變,但是這個指標的指向可以改變
如:
const
int *pa;
intconst *pa;
這兩條語句實現的功能是相同的,均宣告了乙個指向常量的指標,這個常量pa本身是先被賦值了的,就不能通過解引用來改變pa的值,即*pa=d(d是乙個新的值)是錯的,想要通過訪問pa中儲存的常量的位址來間接改變常量的值是不能實現的,但是pa=&d(d是乙個已宣告的變數或常量);就是對的,因為指標的指向可以改變,指標內儲存的位址是可以改變的。
int *const pa =&n;
這條語句的意思就是宣告了乙個常量指標pa初始化指向的是n,那麼他就只能指向n,而不能再指向其他的變數了,即pa=&c(c是其他已宣告的變數)就是錯的不能實現的,但是可以通過解引用來改變變數的值,即*pa=d(d是已宣告的整型變數)是可實現的,相當於通過訪問指標儲存的位址即n的位址來改變變數n的值。
在了解這個概念時,有看到一些前輩給的經驗技巧來使這個概念變得通俗容易區分。
1.有說看const離誰更近一點,在忽略資料型別的情況下離變數近,那他限定的就是指標,即為常量指標,離指標*更近,那他限定的就是變數的值,即為指標常量。
2.也有說,看const在 * 的哪一側,若const在 * 號的左側,那麼就是指標常量,若const在 * 的右側,則為常量指標。
判斷方法各有不同,但原理都是一樣的。
下列哪兩個是等同的
int b;
a const int* a = &b;
b const* int a = &b;
c const int* const a = &b;
d int const* const a = &b;
解析:答案應該是cd。a選項宣告的是指向常量的指標,即指標常量;b選項是乙個錯誤的表示方法;c選項和d選項都表示宣告的是指標本身為常量,他所指向的也是乙個常量
指標常量與常量指標(const用法總結)
const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的安全性和可靠性 指向常量的指標 const int pa int const pa 兩者等價。因為指向常量的指標有時候會指向常量,所以它具有這個性質 不能靠解引用改變它指向的物件的值 以此保護它所指向...
指標常量與常量指標(const用法總結)
const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的安全性和可靠性 指向常量的指標 const int pa int const pa 兩者等價。因為指向常量的指標有時候會指向常量,所以它具有這個性質 不能靠解引用改變它指向的物件的值 以此保護它所指向...
const常量 指向常量的指標和常量指標
1 先看const常量的情況 const int a 2 int const b c c是已經宣告過的整型 兩者都可以。本地的const常量必須在第一次宣告時就初始化,用變數或常量初始化都可以,只是初始化一次以後它的值就不能再改變了,此所謂const的含義。2 接著看指向常量的指標 const in...