已经在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要么丢失,要么在错误的地方......
帮助?
戴夫
答案 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>
会更容易。