鉴于此功能:
int * myFunction(){
static int result[3];
result[0] = 1;
result[1] = 2;
result[2] = 3;
return result;
}
如何在main方法中将return [1]的值赋给变量?
答案 0 :(得分:4)
尝试以下
int main()
{
int x = myFunction()[1];
//...
或者
int main()
{
int *p = myFunction();
int x = p[1];
//...
至于问题标题中的问题,例如你可以写
#include <iostream>
int ( &myFunction() )[3]
{
static int result[3] = { 1, 2, 3 };
//...
return result;
}
int main( void )
{
decltype( auto ) a = myFunction();
std::cout << sizeof( a ) << std::endl;
for ( int x : a ) std::cout << x << ' ';
std::cout << std::endl;
}
程序输出可能看起来像
12
1 2 3
如果您的编译器不支持C ++ 2014,那么声明
decltype( auto ) a = myFunction();
可以替代
int ( &a )[3] = myFunction();
另一种方法是使用std::array
而不是数组。例如
#include <iostream>
#include <array>
std::array<int, 3> myFunction()
{
static std::array<int, 3> result = { { 1, 2, 3 } };
//...
return result;
}
int main( void )
{
auto a = myFunction();
std::cout << sizeof( a ) << std::endl;
for ( int x : a ) std::cout << x << ' ';
std::cout << std::endl;
}
在这种情况下,函数中result
没有必要具有静态存储持续时间。