从函数返回变长数组

时间:2013-07-24 14:34:15

标签: c++ arduino

已经在C#-land呆了一段时间,我无法弄清楚如何在C ++中做到这一点(在Arduino草图中)

我想从库中调用一个函数来返回未知长度的字节列表。有点像这样:

byte devices[] = MyLib::EnumerateDevices();

在图书馆:

byte[] MyLib::EnumerateDevices()
{       
   int count = 0;       

   //some code that modifies count

   static byte *temp = new byte[count];  // Assume count is 2 here

   temp[0] = 42;
   temp[1] = 44;       

   return temp;
}

显然,我有所有指针和derefs要么丢失,要么在错误的地方......

帮助?

戴夫

2 个答案:

答案 0 :(得分:6)

这就是矢量的用途:

std::vector<int> func()
{
    std::vector<int> r;
    r.push_back(42);
    r.push_back(1337);
    return r;
}

向量具有size()成员函数,可以准确返回所需内容。

如果你想指出一个向量,那么写

const int *p = &vec[0];

(显然,将int替换为您使用矢量专用的任何类型。)

答案 1 :(得分:2)

您无法在C或C ++中返回数组。您可以返回指针,但在这种情况下,您还需要返回大小。相反,使用std::vector<int>会更容易。