指針的物理含義
指針是一個特殊的變量,它裏面存儲的數值被解釋成爲內存裏的一個地址。要搞清一個指針需要搞清指針的四方面的內容:指針的類型,指針所指向的類型,指針的值或者叫指針所指向的內存區,還有指針本身所佔據的內存區。分別說明。
先聲明幾個指針放着做例子:
int *ptr
char *ptr
int **ptr
int (*ptr)[3]
int *(*ptr)[4]
2、指針的類型
從語法的角度看,只要把指針聲明語句裏的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。看看下面各個指針的類型:
int *ptr //指針的類型是int *
char *ptr //指針的類型是char *
int **ptr //指針的類型是 int **
int (*ptr)[3] //指針的類型是 int(*)[3]
int *(*ptr)[4] //指針的類型是 int *(*)[4]
3、指針所指向的類型
當通過指針來訪問指針所指向的內存區時,指針所指向的類型決定了編譯器將把那片內存區裏的內容當做什麼來看待。從語法上看,只須把指針聲明語句中的指針名字和名字左邊的指針聲明符*去掉,剩下的就是指針所指向的類型。例如:
int *ptr //指針所指向的類型是int
char *ptr //指針所指向的的類型是char
int **ptr //指針所指向的的類型是 int *
int (*ptr)[3] //指針所指向的的類型是 int()[3]
int *(*ptr)[4] //指針所指向的的類型是 int *()[4]
在指針的算術運算中,指針所指向的類型有很大的作用。