指標的基礎理解,以及引用的理解

2021-04-09 00:26:14 字數 1189 閱讀 6002

指標這個概念是乙個比較頭疼的概念,如果學過資料結構還懂點程式語言的人應該好懂一點,下面是我多年學習以來對於指標的一些理解. 

1.首先你需要明白的是指標是乙個變數(在沒有宣告const的特殊情況下),這就夠了.如果你需要我解釋什麼是變數,那就請你別象下看了!

2.接下來要知道的是指標是乙個特殊的變數,聽其名就可以理解,不過要注意的是他所指向的是乙個記憶體中的位址(所謂學習下資料結構就能理解)

3我也不知道指標是怎麼弄出來的,但是在程式設計的時候我們需要用到他,所以我們必須理解因為在c.c++,甚至在c#中以及其他各種語言都會有怎麼乙個概念.象指標一樣的東西.

4我們來搞清楚乙個概念指標其實包括4部分的內容:指標的型別,指標所指向的型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。

舉幾個列子吧!

(1)int *ptr; //指標的型別是int *

(2)char *ptr; //指標的型別是char *

(1)int *ptr; //指標所指向的型別是int

(2)char *ptr; //指標所指向的的型別是char

指標的值是指標本身儲存的數值,這個值將被編譯器當作乙個位址 (平時在程式設計的時候很少看見所以容易搞混)

其實可以用&取位址符號來看他的直

指標本身佔了多大的記憶體?你只要用函式sizeof(指標的型別)測一下就知道了

運算子&和*

這裡&是取位址運算子,*是...書上叫做"間接運算子"。&a的運算結果是乙個指標,指標的型別是a的型別加個*,指標所指向的型別是a的型別,指標所指向的位址嘛,那就是a的位址。*p的運算結果就五花八門了。總之*p的結果是p所指向的東西,這個東西有這些特點:它的型別是p指向的型別,它所占用的位址是p所指向的位址。

舉個列子

int num=5;把我附值給num變數

int &ref=num;&ref返回的是乙個指標指向num的位址

int *p=&ref;把num的位址給了p指標   可以怎麼簡單的理解*p就是num的位址,p就是num的位址的位址

在舉個簡單的列子int *p=num 這裡我們就可以理解為指標p指向了num的位址(即指標所指的位址),而*p就是num的值,

乙個很實用的應用就是按位址傳遞引數

ovid swap(int *m,int *n)

指標指向乙個物件或者指向乙個物件的引用都是指向物件的首位址

先寫到這裡吧!待續

C語言指標的理解以及指標的指標的理解

指標指向的是記憶體位址編號,記憶體位址編號指向的是對應的內容。我們需要乙個變數,來儲存記憶體位址編號,這個變數的值是乙個記憶體位址編號,但是我們可以通過修改變數的值,來不斷的改變記憶體位址編號。但是,我們如果需要改變該記憶體位址編號的值時,就需要對該記憶體位址編號的值進行修改,而不改變記憶體位址編號...

C 指標的引用理解

指標可以作為引數傳遞直接修改所指的變數的值,如下 void change int p int main 指標傳遞實際上也是值傳遞,傳遞的值便是指標的位址,執行 p 20後,雖然傳遞的是乙個位址的副本,但是副本的值就是變數的位址,執行後,所指向的位址的值變成了20,達到了修改變數值的目的。所以,當需要...

引用與指標的理解

指標變數用於儲存資料的位址,使用方法如 int i 0 int p p i 此時,p 的值為i 的位址,p為位址所儲存的數值也就是 i的值,i的值為位址所存放的值也就是 p的值,i的值為 i p i p i 引用為c 才有的功能,引用變數不占用記憶體,可理解為函式的別名,使用方法如 int i 0 ...