C 中的const和指標組合

2021-09-08 17:20:17 字數 858 閱讀 7869

const  int *p或者int const *p

p 是指向常量的指標

const在*前,p指向的這個int變數對於*p來說是const的,即不能通過*p改變這個變數的值,但是變數本身可以隨便改變自己的值。另外也可以改變p的指向。

例:int x=2;

int y=3;

const int *p=&x;

*p=4;   //錯誤,不能通過*p改變變數的值

x=4;    //可以,x不是乙個常量,可以改變自己的值

p=&y;   //可以,指標p本身不是乙個常量,可以改變p的指向。

int * const p,const在*的後面

指標p本身是個常量,不能改變p的指向。但是可以通過*p改變所指向變數的值。

例:int x=2;

int y=3;

int * const p=&x;     //注:因為指標p是常量,在宣告時就應該初始化。

*p=4;   //可以

x=4;    //可以,x不是乙個常量,可以改變自己的值

p=&y;   //錯誤,指標q本身是乙個常量,不能改變它的指向。

這是前兩種的結合,功能也是前兩者的結合,即不能改變p的指向,也不能通過*p改變所指向的變數的值。

const int * const p或者int const * const p

例:int x=2;

int y=3;

const int * const p=&x;

*p=4;   //不可以,不能通過*p改變所指變數的指。

x=4;    //可以,x不是乙個常量,可以改變自己的值

p=&y;   //錯誤,指標p本身是乙個常量,不能改變它的指向。

C 中const和指標 的組合問題

今天在複習 章節7.3的時候想到以前做的乙個題,const和指標運算子 的若干種組合的合法性和意義問題,有點混淆,所以寫了乙個測試 來驗證一下,簡單明瞭,一目了然。如果有什麼遺漏的話歡迎指出。首先是在ubuntu14.04.1下用gcc 4.8.4編譯執行的結果,編譯器報錯資訊都附加在對應語句後面的...

const和指標的組合

const 限定乙個物件為唯讀屬性 一級指標 1 const char p 限定p為唯讀。p值不能變。2 const char p 限定 p為唯讀。p的操作合法。3 char const p 限定p為唯讀。p的操作合法。4 const char const p 限定p和 p都為唯讀,不能改寫。二級指...

C 中const和指標的用法

名稱是根據const和指標順序的。實際作用是根據const修飾的型別,修飾型別的資料不能改變。按照上面的兩條原則,常量指標應該是const int p這樣的寫法,作用是 如下 int a 20 int b 30 常量指標 int 指標指向的值不能改變 指標的指向可以改變 const int p a ...