[英]c++ array syntax (function returns array)
為什么這段代碼需要數組語法中的'&'?
int (&returnArray(int (&arr)[42]))[42]
{
return arr;
}
當我宣布這樣的時候
int (returnArray(int arr[42]))[42]
{
return arr;
}
我明白了
error C2090: function returns array
但這不是第一個例子中返回的數組嗎? 它是某種對數組的引用嗎?
我知道我也可以將一個數組傳遞給一個函數,它會衰減到一個指針
int returnInt(int arr[42])
{
return arr[0];
}
或通過引用傳遞它
int returnInt(int (&arr)[42])
{
return arr[0];
}
但為什么我不能以相同的方式返回數組?
int (&returnArray(int (&arr)[42]))[42]
第一個&
表示這將返回對數組的引用 。
這是標准要求:
8.3.5功能§6 -
« 函數不應具有類型數組或函數的返回類型 ,盡管它們可能具有類型指針的返回類型或對此類事物的引用。 »
第一個函數不返回數組,它返回對數組的引用 。 在C ++中,數組不能返回數組。
這些主題通常都包含在優秀的C ++書籍中 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.