簡體   English   中英

c ++數組語法(函數返回數組)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM