個人關於指標的理解

2021-06-29 02:49:54 字數 1468 閱讀 5449

指標是什麼?如何理解指標?

因為指標是抽象的,所以這裡我把它擬物化,這樣解釋也許跟容易懂。

指標的專業解釋是:指標是記憶體單元的編號。

說明:以下的黑方框都代表乙個位元組

1)對於記憶體。

我們一般認為記憶體的基本單位是位元組,記憶體空間由很多位元組組成的。

記憶體可以儲存資料,所以我們把每個位元組當做是乙個「箱子」。

資料存入記憶體就好比在箱子裡面放資料

但是,c語言中各個型別在記憶體中佔得位元組數是不一樣的。

比如char型,只要乙個位元組就夠了,所以乙個字元只需乙個「箱子」。

而int型需要4(一般是4個位元組)個「箱子」才放得下。

double型則需要8個「箱子」。

2)編號。

記憶體中每乙個位元組都有乙個編號(是乙個用16進製表示的值),這就是指標(或者說位址)。

這就好比倉庫,為了方便管理貨物,為箱子都編了號。

3)數的儲存。

int a=100;

記憶體中的狀態:

定義a=100,a佔4個位元組,也就是有4個指標,那麼,哪個指標才是指向a的呢?

當乙個資料佔2個及以上位元組的記憶體空間時,把第乙個位元組的位址當做他的指標。

也就是說,這裡的0022fee0才是a的指標。

4)陣列與指標。

我們知道,陣列的元素在記憶體中是連續儲存的。

int arr[3]=;

記憶體中的狀態:

a[2]的

②陣列名也是乙個指標,它的值是第乙個元素的位址

即:arr == &a[0]

值得注意的是:陣列名是乙個指標常量,也就是說他的值是不能改變的。

比如 arr++ ,arr - -等試圖改變arr的值的做法都是不合法的

③arr是第乙個元素的位址,arr+1是第二個元素的位址,arr+2是第三個元素的位址。。。

有人會問:第二個元素個第三個元素的位址難道不應該是arr+4和arr+8嗎?

注意:陣列中arr+n指的是arr指向的元素的後面第n個元素的位址。

實質上來說,應該是:arr+k*n  。因為我們開始定義陣列為int型,所以編譯器自動取k的值為4。

k是乙個由編譯器根據陣列型別自動確定的值。

也就是說,arr[1]的位址是:arr+4*1         arr[2]的位址是:arr+4*2

僅作了解,我們在寫**時萬萬不能按照這個思路

個人對指標的指標理解

每次一看到兩個 號,就頭疼,終於在一次看源 時,看了半天才弄明白其中含義,所以寫一寫對指標的指標的理解。int main 以乙個小例子來說明 我們將a指標稱為一級指標 因為a指標變數儲存的位址儲存的是乙個具體的數值或者字元,反正不再是位址值 b稱為二級指標,因為b是指向指標的指標,以此類推long ...

關於STL 容器當中存放指標的個人理解

首先stl容器中最好是不要存放指標,如果外部被new出來的物件被銷毀了,那麼存放在容器中的指標就變成空指標了,這樣在遍歷的時候,就 了。但是在stl容器中存放指標也有他的好處。首先是在容器中放入物件 先來看看現象,在vector析構後。呼叫了a的析構函式。按正常套路來析構,應該是析構10次,但是注意...

C指標個人理解

先看乙個例子 void get addr num unsigned int p int main 輸出結果為 0123456 個人理解 首先,p為乙個變數,其記憶體上儲存的值為0,通過對p進行 取址,將p所在的記憶體傳遞給函式get addr num,而函式中將傳進來的記憶體 賦值,將p的記憶體儲存...