1. 程式人生 > >指標 上 :什麼是指標,指標型別,指標運算等等

指標 上 :什麼是指標,指標型別,指標運算等等

1.什麼是指標

指標是一個變數,變數裡存的是地址,通過該地址可以找到一塊空間。因此也將該地址形象化稱為指標。

2.為什麼存在指標

(1)指標是為了存放地址,地址是為了標示一塊記憶體空間的。

(2)指標讓記憶體訪問更加方便。

(3)指標的大小在32平臺上是4位元組,在64位平臺上是8位元組。

3指標型別

指標型別:例如:char*,int*,float*都是4位元組,都是type*的方式

char*型別的指標是為了存放char型別變數的地址

int*型別的指標是為了存放int型別變數的地址

4.指標運算:

(1)指標加減整數:指標的型別決定了指標+-1向後一次走多大距離,int*p,P+1向後走4個位元組,char*p,p+1向後走1個位元組

其實等於指標+-sizeof指標所指向元素型別

(2)指標解引用:指標型別決定了指標解引用訪問幾個位元組。char*指標解引用訪問一個位元組,int*指標解引用訪問4個位元組

(3)指標關係運算:即指標比較,接下來看下圖程式碼


可以看出此上兩段程式碼都是給一個數組賦初值,而不同的是,第一段程式碼;用最後一個元素後面的元素的地址與陣列內元素地址比較而。第二段程式碼用第一個元素前面元素的地址和陣列內元素地址比較。在大多數平臺下,兩段程式碼都能執行成功但是後面一種不符合c語言編碼規則


(4)指標-指標:指標減指標代表兩地址中間元素個數,而且必須保證前後指標同一型別,而且指向同一塊空間。看下圖,結果為9


5.二級指標:

存放一級指標的地址,如下圖


二級指標可以解引用兩次 先對ppa解引用可以找到pa,即*ppa就是pa,再對pa解引用找到a,即*pa就是a.

二級指標+1代表向後走type*個位元組,也就是4位元組。符合上面所講的指標運算