初談指標常量和常量指標

2021-08-25 11:15:28 字數 1326 閱讀 7906

在學習c++中,對於指標方面的知識學習方面還是有一定難度的,相關概念也很晦澀難以理解,本人整理了相關的知識點已經本人的理解,希望可以得到大家的更正和幫助到你們的學習。

很多老師為了同學們能很快的理解和應用指標,往往會告訴大家:指標即位址! 其實我可以告訴你這是乙個不嚴謹的說法,正確來說:指標是乙個變數!變數本身會有系統給它分配一定的位址空間,而指標這個變數裡面所存的值就是要指向的位址的值。這樣說不知道大家有沒有相對理解,指標本身也有占有位址空間,故有多重指標的出現,即指標裡面存指標的位址,指向指標的指標。一般在32位的平台裡,指標本身佔4個位元組的長度。

例如:int  a   =   1;

int  *p   =   &a;

其中  int  代表變數的型別  ,*  代表定義的變數為指標,p為指標的變數名,p裡面存的是變數a的位址,即p為指向a的指標。

二:指標常量和常量指標

1.指標常量:

指標常量其本質是乙個常量,不可改變,是乙個指標型別的常量,即始終指向同乙個記憶體,指標常量不可以修改指標的值,但可以修改指向的內容,通俗的說就是指標常量儲存的是乙個位址是不能改的,一直指向這個位址,而可以通過該指標常量改變指向的那個位址裡面的值或者內容。

定義:int   a   =   10;

int    *  const  p   =   &a;

【注意: *  在用的時候,除了定義指標時候,後面接變數的時候,可以理解為乙個 

取值符,取出該變數位址裡面儲存的值。而   &  一般在變數前面可以理解為 

取位址符

,即取出該變數所在的位址的值,在c++中有乙個正規的叫法叫  引用 ,相應的在函式傳參就有了 值傳遞 和 引用(址傳遞) 】 

2:常量指標

常量指標其本質是指標,上面說到指標是乙個變數,即常量指標本身是可以改變的,即可以指向不同的位址,而這個指標是常量型別的,代表的是指標一旦指向了某一塊記憶體,則就不能通過常量指標來修改這塊位址裡面的值,與指標常量正好相反。

定義:    int   a  =   10;  b  =    20;

const   int *p   =   &a;(或者   int  const  * p   兩者等價)

此時定義了常量指標  p   ,p  可以指向   a    後再改變為指向   b  ;但一旦指向  a  或者  b  後就不能通過  p  改變  a  或者  b  的值     例如:    p  =  &b;   (正確)       *p   =   30;(錯誤)

1.常量位址與普通位址的區別在於:例如  int    a  =  10;這裡    &a    就是普通位址。而   const   int   a   =   10;這裡  &a   就是常量位址   。

指標 常量指標和指標常量

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

常量指標 和 指標常量

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

常量指標和指標常量

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