呵呵,實(shí)在是厭倦了繞口的解釋。
指針數(shù)組,故名思義,就是指針的數(shù)組,數(shù)組的元素是指針;
數(shù)組指針,同樣,就是直想數(shù)組的指針。
簡(jiǎn)單舉例說(shuō)明:
int *p[2]; 首先聲明了一個(gè)數(shù)組,數(shù)組的元素是int型的指針。
int (*p)[2]; 聲明了一個(gè)指針, 指向了一個(gè)有兩個(gè)int元素的數(shù)組。
其實(shí)這兩種寫(xiě)法主要是因?yàn)檫\(yùn)算符的優(yōu)先級(jí), 因?yàn)閇]的優(yōu)先級(jí)比*高。所以第一種寫(xiě)法,p先和[]結(jié)合,所以是一個(gè)數(shù)組,后與*結(jié)合,是指針。后一種寫(xiě)法同理。
指針數(shù)組如下處理就會(huì)很清楚:
typedef int* intPtr;
intPtr p[2];
一目了然,所以為了避免迷惑,做適當(dāng)?shù)膖ypedef也是很有必要的。
同理,數(shù)組指針也可以作類似處理:
typedef int intArray2[2];
intArray2 * p;
和原來(lái)的聲明都是等價(jià)的。
個(gè)人建議編程過(guò)程中采用typedef來(lái)進(jìn)行類型定義,這樣程序看起來(lái)會(huì)清晰很多。舉個(gè)例子說(shuō)明:
數(shù)組指針,元素為指向數(shù)組的指針:)
首先,指向數(shù)組的指針為:
typedef intArray2* intArray2Ptr;
然后是一個(gè)數(shù)組的元素:
typede intArray2Ptr intArray2PtrArr3[3];
最后數(shù)組的指針:
intArray2PtrArr3 *p;
呵呵,寫(xiě)到這里自己也有點(diǎn)暈了,反正我工作以來(lái)從來(lái)沒(méi)有寫(xiě)過(guò)這么拗口的程序,僅作參考,實(shí)際應(yīng)用價(jià)值不大。
但是開(kāi)題所提到兩種情況應(yīng)該是比較常見(jiàn)的。另外就是函數(shù)指針。另外詳述。