1. 程式人生 > >c++ 數組的聲明(1)

c++ 數組的聲明(1)

引用 是個 spa [] ++ blog ptr ack 靜態數組

今天討論靜態數組的聲明。

首先給出四個聲明:

int *ptrs[10];
int *refs[10] = / ? /; 
int (*Parray)[10] = &arr;
int (&arrRef)[10] = arr;

就我理解,c++裏應該這樣看待一個變量的聲明:

如果有括號,把括號內的內容看做一個整體,然後從右往左閱讀。最右邊的聲明元素即是聲明對象的本質。

數組聲明,一般名字左側是數組所包含元素內容,右側是數組的大小。

所以:

  1. 沒有括號,所以從右往左閱讀。首先發現ptrs是個[10],也就是數組,其中的元素是int *。
  2. 從右往左閱讀。refs是個[10],但是因為引用不是對象,不可能有數組,所以這個是錯誤的。
  3. 把括號內的元素看成一個整體,發現*Parray是一個int [10],那麽parry就是一個有十個int變量的數組的指針。
  4. 同理,arrRef是一個有十個int變量的數組的引用。

小測試:猜猜下面表達式的作用?

int *(&arry)[10] = ptrs;

答案:易猜得arry是一個int *[]的引用。該表達式是將該數組的第十個對象賦值為ptrs。

今天就整理到這裏。

c++ 數組的聲明(1)