目錄
(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 注 可以將乙個常量的位址賦值給乙個對應型別的常量指標,因為常量指標不能夠通過指標修改內粗資料。只能防止通過指標引用修改記憶體中的資料,並不保...