a)、int *p;
b)、int **p;
1、指針的本質
分析:
所謂的數據類型就是具有某種數據特征的東東,比如數據類型char,它的數據特征就是它所占據的內存為1個字節, 指針也很類似,指針所指向的值也占據著內存中的壹塊地址,地址的長度與指針的類型有關,比如對於char型指針,這個指針占據的內存就是1個字節,因此指針也是壹種數據類型,但我們知道指針本身也占據了壹個內存空間地址,地址的長度和機器的字長有關,比如在32位機器中,這個長度就是4個字節,因此"指針本身也同樣是壹種數據類型",因此,我們說,指針其實是壹種復合的數據類型,
好了,現在我們可以分析上面的幾個例子了。
假設有如下定義:
int nValue;
那麽,nValue的類型就是int,也就是把nValue這個具體變量去掉後剩余的部分,因此,上面的4個聲明可以類比進行分析:
a)、int *
*代表變量(指針本身)的值是壹個地址,int代表這個地址裏面存放的是壹個整數,這兩個結合起來,int *定義了壹個指向整數的指針,類推如下:
b)、int **
指向壹個指向整數的指針的指針。
2、對指針所指向物的分析
現在再對指針這個復合類型的第二部分,指針所指向物的意義進行分析。
上面我們已經得到了指針本身的類型,那麽將指針本身的類型去掉 “*”號就可得到指針所指向物的類型,分別如下:
a)、int
所指向物是壹個整數。
b)、int*
所指向物是壹個指向整數的指針。