返回一个动态数组

时间:2015-02-08 20:20:09

标签: c++

所以我想用三个函数创建一个可执行文件:

这是一个例子:

float vec(int opt, int t)
{
int i;
float * v = new float[t];
// Do stuff with v
return * v;
}
}

它从主要获取参数 opt t 。然后主要需要返回 v 以在另一个函数中使用它。

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

vec的返回类型应为float *,并且您的return语句应为return v。使用v取消引用*只会为您提供数组的第一个元素。

我注意到这种设计风格很糟糕。它依赖于调用者来释放动态分配的数组。让调用者创建一个数组并通过引用vec传递它,或让vec静态返回一个不同的容器会更好。 @Mat建议std::vector;这可能是一个不错的选择。

您在功能结束时还有一个额外的}。摆脱它。

答案 1 :(得分:0)

好吧,你的签名说该函数返回一个float,而不是一个浮点数组。直接回答你的问题......

float *vec(int t)
{
    float * v = new float[t];
    // Do stuff with v
    return v;
}
  

这样做的最佳方式是什么?

这完全是一个不同的问题。最好的&#34;方法是返回std::vector<float>并完全避免手动内存管理。