指標理解及相關知識

2021-08-21 20:46:15 字數 1646 閱讀 9558

引言: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 總結 空指標和野指標都不是我們申請的...