如何在c中返回一个float数组并保存一个浮点数组以便以后使用?

0 c c++

我有一个C++函数返回一个std::vector<float>.

我正在与一些C代码接口.

如何更改此C++函数以便它返回一些指向float数组的指针,如何保存此返回的数组以便我可以在我的C代码中使用它?

Jon*_*Jon 5

你可以得到一个指向同一个"原始"阵列std::vector::data或者&my_vector[0]如果C++ 11不可用.但是,如果向量操作强制向量调整大小,则原始存储将在内存中移动,并且此指针将不再安全使用.如果有任何这种情况发生的可能,您将需要分配不同的存储器(例如,通过创建的副本vector),并提供一个指针来代替.

更新:伍德罗的评论让我注意到你实际上是在从函数返回指针之后.您只能返回指向堆分配内存的指针,因此您不能使用本地vector(或任何其他类型的堆栈分配内存)来执行此操作.

  • 还要确保数组没有在返回它的函数的堆栈上分配,否则指针将很快变得无效. (2认同)