引言:c語言中一種重要的資料型別就是指標,指標是c語言的特色之一。
正確靈活地運用指標,可以使程式編寫簡潔,緊湊,高效。
利用指標變數可以有效地表示各種複雜的資料結構,如佇列(queue)、棧(stack)、鍊錶(linked table)、樹(tree)、圖(graph)等等,正是由於複習資料結構,發現當時c語言指標學的一點都不好,指標這部分確實有點難,最近花了幾天時間研究指標,總結了一下。
因此,熟練掌握和正確使用指針對乙個成功的c語言程式設計人員來說是十分重要的。
正題:學指標最重要的是記住兩點:①指標=位址,位址=指標,指標相當於位址 ②畫圖,畫圖,畫圖 (畫圖可以很好理解,要不繞來繞去的,一會兒就暈了)
(1)首先,在計算機中,所有的資料都是以二進位制形式存放在記憶體儲器(簡稱記憶體)中的。
就是要畫這個記憶體圖。
名字記憶體位址
內容例如:a
例如:0x6000
存放資料,變數,
p10x6001
....
0x6002
0x6003
0x6004
0x6005
0x6006
0x6007
…………
訪問內容那一列需要通過位址標號進行訪問,可分為直接訪問(定址)和間接訪問(定址),指標相當於間接訪問(定址)。 名字
記憶體位址
內容(存放資料,變數,)
例如:a
例如:0x6000
變數a的內容
0x6001
0x6003
0x6004
p(指標變數)
0x6005
0x6000(p指標變數的內容為 位址 =指標)
0x6006
0x6007
…………
(2)開始指標變數的定義(重點理解好 * 星號的用處)
① 指標變數定義的一般形式:
【型別修飾符】 資料型別 * 變數名列表;
例如:int * p; // * 星號 是與變數名p分開的,p是指標變數,而不是*p是指標變數。
// 這個*星號很重要,表示後邊跟的指標變數,不是普通變數
②指標變數的初始化
int *p=&a; //在這的*星號稱為指標運算子或稱為「間接訪問記憶體位址」運算子;
//在定義時,通過它表明某個變數被定義為指標變數,
//而在使用時,*p表示p所指向的變數的內容。就是取內容,畫圖,畫圖,畫圖如下
p(指標變數)
0x6005
0x6000(p指標變數的內容為 位址 =指標)
*p 取的p的內容為0x6000,就是取的最後一列
例如:a
例如:0x6000
變數a的內容
&a 是取a的位址,就是取的中間那一列。
把這個位址放到p中當做內容,這個位址就是指標。
最後還有一些相關名詞,指標,指標變數,指標陣列,陣列指標,指標函式,函式指標,指標的指標,,要看最後乙個名詞是什麼,以哪個名詞結尾,
例如指標陣列,最後乙個名詞是陣列,說明它是乙個陣列,然後解釋為乙個由指標組成的陣列(各個元素都是指標) char *p[10];
陣列指標,陣列名本身就是乙個指標,指向陣列的首位址,注意這是乙個常數。 char (*p)[10];
暫時這麼多。
深度理解指標及相關概念
2.指標變數 指標變數是變數,具有儲存空間。就像int,float等型別一樣,當然,指標有別的變數不具有的特殊用法。1.指標的型別 我們將type 叫做指標的型別,type指的是指標所指向的型別,type是指最後乙個 之前所有的東西,例如 char p,它的type部分就為char char p,它...
指標相關知識
1.間接訪問操作符 int d a d與 d的區別 d為乙個指標,指向a的儲存位址 d為d指向位址中的值 即a的值 include includeusing namespace std int a 100 int d a d為乙個指標,指向a的儲存位址 d為d指向位址中的值。int main pri...
指標相關知識
int main 總結 所有指標型別在32位作業系統下是4個位元組 空指標 指標變數指向記憶體中編號為0的空間 用途 初始化指標變數 注意 空指標指向的記憶體是不可以訪問的 空指標 int main 野指標 指標變數指向非法的記憶體空間 野指標 int main 總結 空指標和野指標都不是我們申請的...