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