在網上看到一篇部落格寫到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...