【发布时间】:2020-04-18 15:28:27
【问题描述】:
为什么在函数中返回数组时,需要将数组定义为全局变量?
int v[10] = { 1,2,3,44,55,66,77,8,9,1 };
auto fun()->int(*)[10]
{
//int v[10] = { 1,2,3,44,55,66,77,8,9,1 };/
return &v;
}
int main()
{
auto t = fun();
for (int i = 0; i <= 10; i++)
cout << (*t)[i] << endl;
}
【问题讨论】:
-
那不是有效的 C 代码。它看起来像 C++(过度使用
auto) -
谁说有必要?这就是堆的用途。您不能像评论中显示的那样在堆栈上分配它。
-
for (int i = 0; i <= 10; i++)迭代 11 次。int v[10]有问题。 -
@UnholySheep:尾随返回类型在这里看起来实际上很合适,而不是丑陋的
int (*func())[10]语法。
标签: c++