【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在 C 中引用匯編語言定義的 .globl 變數變數
- python怎麼定義陣列Python陣列
- Java 定義長度為 0 的陣列 / 空陣列Java陣列
- C++教程-----C++變數型別和變數的定義C++變數型別
- [C++]變數宣告與定義的規則C++變數
- C++ 的靜態成員變數為什麼一定要在類外定義C++變數
- JAVA陣列的定義及用法Java陣列
- java 陣列的定義(宣告)方法Java陣列
- 矩陣指數的定義矩陣
- react中什麼使用定義變數,需要使用useRef,什麼時候直接定義即可?React變數
- 變數的定義和使用變數
- C++類內成員變數可以定義引用型別嗎C++變數型別
- GO 陣列-多種定義Go陣列
- Rust引用自定義c/c++庫RustC++
- grafana如何使用定義的變數Grafana變數
- java陣列元素的引用Java陣列
- 01.變數定義變數
- c 語言中巨集定義和定義全域性變數的區別變數
- 設計模式的數學定義是什麼?設計模式
- Python定義全域性變數的用法Python變數
- php 迴圈陣列引用傳值改變陣列本身的值PHP陣列
- 為什麼Vue不能觀察到陣列length的變化?Vue陣列
- TS定義陣列 ts宣告函式陣列函式
- MySQL中變數的定義和變數的賦值使用MySql變數賦值
- vue3+ts 定義props中的物件陣列Vue物件陣列
- lua語法-變數的定義與使用變數
- JavaScript中是如何定義私有變數的JavaScript變數
- 為什麼defineProperty不能檢測到陣列長度的“變化”陣列
- 引用變數變數
- SpringBoot基礎學習(三) 自定義配置、隨機數設定及引數間引用Spring Boot隨機
- 實體類定義陣列物件,和物件陣列物件
- 自定義元件-元件的建立和引用元件
- c+++變數宣告和定義C++變數
- thymeleaf關於js的一些坑(陣列定義)JS陣列
- C++ 定義靜態成員 static 關鍵字不能在定義出重複出現C++
- java的強引用、軟引用、弱引用、幻象引用,引用佇列總結Java佇列
- php變數的型別是如何轉換的?常量如何定義?系統常量是如何定義的?PHP變數型別
- Java 中的強引用、軟引用、弱引用和虛引用分別是什麼?Java
- 雲端計算的定義是什麼?