const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的安全性和可靠性
指向常量的指標:
const int *pa;
int const *pa;
兩者等價。因為指向常量的指標有時候會指向常量,所以它具有這個性質:「不能靠解引用改變它指向的物件的值」,以此保護它所指向的常量的常量性:
*pa =d; // 不可行(d是已經宣告過的整型)
但指標本身的值是可變的:
pa=& d; // 可行(d是已經宣告過的整型)
而且指向常量的指標有時候也會指向變數,如下:
int t,u;
const int *pa;
pa =&t; //可行,指向變數t
pa =&u; //也可行,指向變數u
我們可以把它理解成:「為了指向常量而發明的指標」,這樣比較貼切。
常量指標:
int *const pa =&n; // n是之前已經宣告過的整型變數,注意必須是變數,理由見下
「常量指標」即指標本身的值是常量,但「能靠解引用改變它指向的物件的值」,如下:
pa=&d; // 不可行(d是已經宣告過的整型)
*pa =d; // 可行(d是已經宣告過的整型)
因為常量指標也是一種const常量,所以它同樣必須在第一次宣告時就初始化,不過它的初始值縮小為只能是變數(的位址),因為只有變數才能確保以後能靠解引用而改變它指向的物件的值。這使得常量指標不象一般的const常量,用變數或常量初始化都可以。
也就是說,常量指標反而總是指向變數的。
舉例:typedef char * pstr;
char string[4] = "abc";
const char *p1 = string;
const pstr p2 = string;
p1++;
p2++;
答案與分析:
問題出在p2++上。
1)、const使用的基本形式: const char m;
限定m不可變。
2)、替換1式中的m, const char *pm;
限定*pm不可變,當然pm是可變的,因此問題中p1++是對的。
3)、替換1式char,const newtype m;
限定m不可變,問題中的charptr就是一種新型別,因此問題中p2不可變,p2++是錯誤的。
char *p = "i'm hungry!";
p[0]= 'i';
答案與分析:
上面的**可能會造成記憶體的非法寫操作。分析如下, 「i'm hungry」實質上是字串常量,而常量往往被編譯器放在唯讀的記憶體區,不可寫。p初始指向這個唯讀的記憶體區,而p[0] = 'i'則企圖去寫這個地方,編譯器當然不會答應。
總結:
1)、const在前面
const int nvalue; //nvalue是const
const char *pcontent; //*pcontent是const, pcontent可變
const (char *) pcontent;//pcontent是const,*pcontent可變
char* const pcontent; //pcontent是const,*pcontent可變
const char* const pcontent; //pcontent和*pcontent都是const
2)、const在後面,與上面的宣告對等
int const nvalue; // nvalue是const
char const * pcontent;// *pcontent是const, pcontent可變
(char *) const pcontent;//pcontent是const,*pcontent可變
char* const pcontent;// pcontent是const,*pcontent可變
char const* const pcontent;// pcontent和*pcontent都是const
答案與分析:
const和指標一起使用是c語言中乙個很常見的困惑之處,在實際開發中,特別是在看別人**的時候,常常會因為這樣而不好判斷作者的意圖,下面講一下我的判斷原則:
沿著*號劃一條線,const和誰在一邊,那麼誰就是const,即const限定的元素就是它。你可以根據這個規則來看上面宣告的實際意義,相信定會一目了然。
另外,需要注意:
對於const (char *) ; 因為char *是乙個整體,相當於乙個型別(如 char),因此,這是限定指標是const。
常量指標與指標常量(const用法)
初了解,const是在c語言中為了提高程式的安全性和可靠性而用來修飾資料型別的,const修飾的資料型別是指常型別,常型別的變數或物件的值是不能被更新的,即相當於限定為 唯讀 的狀態。即指向常量的指標,該指標所指向的是乙個常量,常量的值不能通過解引用來改變,但是這個指標的指向可以改變 如 const...
指標常量與常量指標(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...