【C++】為什麼不能定義陣列的引用,卻可定義變數的引用
陣列的引用的可以定義的,比如: int a[10]; int(&ra)[10]=a; 或者: int* const& ra=a; //陣列是個地址,那麼先定義一個int地址的引用int*& ,陣列名有const特性,所以引用也要是個const,於是用const修飾& 就有int* const& ra=a; 這個實際上是個指標的引用,和int(&ra)[10]=a;還是有區別的。 int(&ra)[10]=a;這是個真正的陣列的引用,用sizeof(ra)可以看出區別. 但不能定義引用陣列,就是所有元素都是引用的陣列: int& ra[10]; //這個是不行的 ,定義陣列時要分配空間,而引用是不佔用記憶體空間的,所以c++規定不可以定義引用陣列 //陣列引用傳遞例子如下: bool array_assign(int (&p)[3],int (&q)[3]){//std::cout<<sizeof(p)<<std::endl;if(sizeof(p)!=sizeof(q)){std::cout<<"The subscript values do not match@!!!"<<std::endl;return false;}
for(size_t i=0;i<sizeof(q)/sizeof(q[0]);i++){p[i]=q[i];
}
return true;}int main(){int a[3]={2,8,16};int b[3];bool rest;rest=array_assign(b,a);
if(rest){for(size_t i=0;i<3;i++){std::cout<<b[i]<<std::endl;}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30221425/viewspace-2142581/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 定義陣列時為什麼不能用含有變數的表示式陣列變數
- Linux下變數的定義及引用Linux變數
- 在 C 中引用匯編語言定義的 .globl 變數變數
- Java 定義長度為 0 的陣列 / 空陣列Java陣列
- Java 陣列的不同定義方式和陣列長度為可變引數Java陣列
- javascript陣列定義JavaScript陣列
- C++教程-----C++變數型別和變數的定義C++變數型別
- C++ 的靜態成員變數為什麼一定要在類外定義C++變數
- python怎麼定義陣列Python陣列
- [C++]變數宣告與定義的規則C++變數
- react中什麼使用定義變數,需要使用useRef,什麼時候直接定義即可?React變數
- JAVA陣列的定義及用法Java陣列
- java 陣列的定義(宣告)方法Java陣列
- 變數的定義和使用變數
- C++類內成員變數可以定義引用型別嗎C++變數型別
- GO 陣列-多種定義Go陣列
- PHP核心定義變數的方式PHP變數
- 預定義的SQL*Plus變數SQL變數
- grafana如何使用定義的變數Grafana變數
- Rust引用自定義c/c++庫RustC++
- 為什麼Vue不能觀察到陣列length的變化?Vue陣列
- 變數定義錯誤變數
- 01.變數定義變數
- 設計模式的數學定義是什麼?設計模式
- 為什麼在mc檔案裡面定義的FEATURE不能用(轉)
- java陣列元素的引用Java陣列
- c 語言中巨集定義和定義全域性變數的區別變數
- 矩陣指數的定義矩陣
- sqlplus中define定義的常量和variable定義的變數的區別!SQL變數
- php 迴圈陣列引用傳值改變陣列本身的值PHP陣列
- 【C++注意事項】2 變數宣告和定義C++變數
- 一個C++巨集定義與列舉定義重複的編譯錯誤C++編譯
- HtmlAgilityPack System.Xml.XPath.IXPathNavigable”在未被引用的程式集中定義HTMLXML
- 使用final關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變?變數物件
- DELPHI也可以實現控制元件陣列,用定義陣列變數實現控制元件陣列 (轉)控制元件陣列變數
- MySQL中變數的定義和變數的賦值使用MySql變數賦值
- c#二維陣列定義宣告C#陣列
- TS定義陣列 ts宣告函式陣列函式