Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;数组语法(函数返回数组)_C++_Arrays - Fatal编程技术网

C++ c++;数组语法(函数返回数组)

C++ c++;数组语法(函数返回数组),c++,arrays,C++,Arrays,为什么这段代码需要数组语法中的“&” int (&returnArray(int (&arr)[42]))[42] { return arr; } 当我这样宣布的时候 int (returnArray(int arr[42]))[42] { return arr; } 我明白了 但在第一个示例中,它不是返回了一个数组吗?它是对数组的某种引用吗 我知道我也可以将数组传递给函数,在那里它将衰减为指针 int returnInt(int arr[42]) { retur

为什么这段代码需要数组语法中的“&”

int (&returnArray(int (&arr)[42]))[42]
{
  return arr;
}
当我这样宣布的时候

int (returnArray(int arr[42]))[42]
{
  return arr;
}
我明白了

但在第一个示例中,它不是返回了一个数组吗?它是对数组的某种引用吗

我知道我也可以将数组传递给函数,在那里它将衰减为指针

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++返回值。

这些主题通常都被很好地涵盖在.< /p> @约翰中,我猜想所有C++的书都应该提到数组值语义。我试图编辑这个问题的副本,以显示它与OndoDo有点不同,这是有意义的,因为将数组作为参数衰减成指针?因此,暗示原始类型始终是“数组”而不是指针,因此不能期望作为指针类型返回?所以这反映了我们为什么会有腐烂的奇怪之处。

int (&returnArray(int (&arr)[42]))[42]