指標常量和常量指標的分辨

2021-10-23 14:20:53 字數 1723 閱讀 5889

目錄

(0)指標變數(位址變數)

(1)指標常量

(2)常量指標

(3)常指標常量

比較記憶:

【練習題目】

指標變數存放的資料型別不同,所占用的儲存空間長度也不同。

//例如:

int *p1;   // *p1=9;

char *p2;

有了指標以後,不僅可以對資料本身進行操作,也可以對儲存資料的變數位址進行操作

指標常量:是常量,但是有指標修飾。

int a,b;

int * const p=&a //指標常量

//以下兩種操作:

//    *p= 9; //操作成功

//    p=&b;   //操作錯誤,指標p將一直指向a,不能再指向b

有指標修飾的常量,p代表乙個指標位址(p)不允許修改,但是指標所指的值(*p)是可以修改的。

(巧妙記憶:* const p ———— const後面離p近,則p不能修改)

常量指標:資料型別前有const修飾,被定義的指標變數就是指向常量的指標變數(常量指標)

int a,b;

const int *p=&a  //常量指標

//以下兩種操作:

//    *p=9;    //操作錯誤,指標所指的值不能改變

//    p=&b;    //操作成功

本質是指標,指標所指的物件的值(*p)不能修改,但是指標(p)是可以修改的。

(巧妙記憶:const *p ———— const後面離*近,則*p不能修改)

常指標常量:指標不能改變,指標指向的值也不能改變。格式如下:

(3.1)const   資料型別 * const 指標變數=變數名;  //例如:const char *const a

(3.2)資料型別 const  *const 指標變數=變數名; 

1) 關鍵要看const修飾的是誰

int const   和  const int 是一樣的。

2) 若是指標:const離誰( 是*還是『指標變數名』)比較近就不允許誰被修改!

(a)const * p:表示帶*運算物件的是常量,也就是*p 不可變 (暗示p可變,p不帶*)——常量指標

(b)* const p:表示變數名是常量  也就是p不可變 (暗示*p可變,const沒有修飾*)——指標常量

再看看——鞏固記憶:

(1)const int n=5; 和 int const n=5; 完全等價

(2) const char *p;

char const

*p;以上兩種是指向常量的指標——常量指標

(3)char * const

p;        這裡是常指標——指標常量

(單選題)關於const描述錯誤的是( )

a. const int a = 1; 定義了乙個整型常量a,值不可變;

b. char *const a = "abc"; 指標a指向的內容不可變;

c. const char *a = "abc"; 指標a指向的內容不可變;

d. const char *const a = "abc"; 指標a指向的內容不可變;

答案:c

指標 常量指標和指標常量

const關鍵字宣告乙個常量,常量宣告後不能修改。類似的,我們可以宣告常量指標 double radius 5 double const pvalue radius pvalue 4 可以修改其中pvalue是乙個常量指標,其宣告和初始化必須在同一條語句中,後面的程式不能為其賦予新的位址。注意,雖然...

常量指標 和 指標常量

在c 的學習中,有人經常搞不清楚 常量指標 和 指標常量 這兩個概念。其實簡單一點講,常量指標 所指向的位址上的資料是常量,而 指標常量 所指向的位址是常量,位址上面的資料是可以變化的。常量指標,表述為 是常量的指標 它首先應該是乙個指標。指標常量,表述為 是指標的常量 它首先應該是乙個常量。指標常...

常量指標和指標常量

定義 具有只能夠讀取記憶體中資料,卻不能夠修改記憶體中資料的屬性的指標,稱為指向常量的指標,簡稱常量指標。宣告 const int p int const p 注 可以將乙個常量的位址賦值給乙個對應型別的常量指標,因為常量指標不能夠通過指標修改內粗資料。只能防止通過指標引用修改記憶體中的資料,並不保...