从函数返回可变长度数组

Return variable length array from function

本文关键字:数组 函数 返回      更新时间:2023-10-16

在C#中已经有一段时间了,我不知道如何在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;
}

很明显,我所有的指针和指针要么不见了,要么放错了地方。。。

帮助?

Dave

这就是向量的用途:

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。)

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