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