c++ 數組的聲明(1)
阿新 • • 發佈:2017-07-02
引用 是個 spa [] ++ blog ptr ack 靜態數組
今天討論靜態數組的聲明。
首先給出四個聲明:
int *ptrs[10]; int *refs[10] = / ? /; int (*Parray)[10] = &arr; int (&arrRef)[10] = arr;
就我理解,c++裏應該這樣看待一個變量的聲明:
如果有括號,把括號內的內容看做一個整體,然後從右往左閱讀。最右邊的聲明元素即是聲明對象的本質。
數組聲明,一般名字左側是數組所包含元素內容,右側是數組的大小。
所以:
- 沒有括號,所以從右往左閱讀。首先發現ptrs是個[10],也就是數組,其中的元素是int *。
- 從右往左閱讀。refs是個[10],但是因為引用不是對象,不可能有數組,所以這個是錯誤的。
- 把括號內的元素看成一個整體,發現*Parray是一個int [10],那麽parry就是一個有十個int變量的數組的指針。
- 同理,arrRef是一個有十個int變量的數組的引用。
小測試:猜猜下面表達式的作用?
int *(&arry)[10] = ptrs;
答案:易猜得arry是一個int *[]的引用。該表達式是將該數組的第十個對象賦值為ptrs。
今天就整理到這裏。
c++ 數組的聲明(1)