指針數組和數組指針(轉)

轉自:http://www.cppblog.com/cooleaf/archive/2006/05/19/7418.html

  指針數組,故名思義,就是指針的數組,數組的元素是指針;
  數組指針,同樣,就是直想數組的指針。

  簡單舉例說明:

  int *p[2]; 首先聲明瞭一個數組,數組的元素是int型的指針。
  int (*p)[2]; 聲明瞭一個指針, 指向了一個有兩個int元素的數組。

  其實這兩種寫法主要是因爲運算符的優先級, 因爲[]的優先級比*高。所以第一種寫法,p先和[]結合,所以是一個數組,後與*結合,是指針。後一種寫法同理。
  指針數組如下處理就會很清楚:
  typedef int* intPtr;
  intPtr p[2]; 
  一目瞭然,所以爲了避免迷惑,做適當的typedef也是很有必要的。
  同理,數組指針也可以作類似處理:
  typedef int intArray2[2];
  intArray2 * p;
  和原來的聲明都是等價的。
   
  個人建議編程過程中採用typedef來進行類型定義,這樣程序看起來會清晰很多。舉個例子說明:

  數組指針,元素爲指向數組的指針:)
  首先,指向數組的指針爲:
  typedef intArray2* intArray2Ptr;
  然後是一個數組的元素:
  typede intArray2Ptr intArray2PtrArr3[3];
  最後數組的指針:

  intArray2PtrArr3 *p;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章