為什麼能陣列引用,但不能引用陣列

2021-08-06 05:53:20 字數 607 閱讀 7424

在網上看到一篇部落格寫到c++中不能建立陣列的引用。因為陣列是乙個由若干個元素所組成的集合,所以無法建立乙個陣列的別名。 但是int a[3] =; int (&b)[3] = a; 這段程式是可以執行...展開

holypeng

|瀏覽 3249 次

我有更好的答案

邀請更新

發布於2010-07-07 20:10

最佳答案

不能建立陣列的引用是說,陣列的元素不能是引用。

而你寫的

int (&b)[3] = a;

b本身是乙個引用,b不是陣列。

b的引用是陣列名a.

如果建立

陣列的元素是引用的陣列是

int& b[3];

這樣b才是陣列,陣列中元素才是引用。但是

int& b[3];

這樣c++不支援,因為引用不可以作陣列中的元素。

主要引用不可以作為陣列元素的原因是它不支援傳統意義的複製。

傳統意義的複製:

int a = b;

a和b在記憶體中分別占用,內容一致。

如果int &a = b;

這種複製,記憶體中a並不分配新的記憶體

陣列指標為什麼不能使用strcpy

程式設計中遇到的問題,終於弄明白了 例程說明如下 include include int main char argv,char argc 編譯時不會出錯,但是執行時會出錯,你定義char b 10 時b 10 的每個元素是乙個指標,指向字元型的,但是指向的位址是隨機的,是不確定的,所以strcpy...

為什麼不能在函式中申請大陣列?

1.簡而言之,陣列定義在函式中時,占用的記憶體來自棧空間,棧空間是在程序建立時初始化的,有固定的大小,一般很小,所以太大的陣列會耗光棧空間。全域性變數一般分配在資料段,可以比較大。2.bbs段 資料段 段 堆與棧及5大記憶體分配 bss段 block started by symbol bss段 b...

為什麼拷貝建構函式必須為引用傳遞,不能是值傳遞?

拷貝建構函式的標準寫法如下 class base base const base b 上述寫法見得最多,甚至你認為理所當然。那麼如果我們不寫成引用傳遞呢,而是值傳遞,那麼會怎樣?class base base const base b 編譯出錯 error c2652 base illegal co...