用数据填充未指定大小的数组

Fill Array of unspecified Size with data

本文关键字:数组 未指定 数据 填充      更新时间:2023-10-16

所以我现在正在学习C++,我现在很困。我一直在互联网形式中研究一段时间,但找不到我的问题的解决方案。也许是因为我不知道该照顾什么。

并为可能具有误导性的标题而苦恼,但问题是:

假设我有一个名为 Data 的结构,其中包含一个 int 数组和其他一些成员

struct Data{
...
uint8_t values [];
}

现在我有一个方法测试

void test (uint8_t *buffer, size_t buffer_size)
{
...
}

在该方法中,我创建了一个数据实例,我想将存储在缓冲区中的值分配给数据实例的数组,我不知道如何做到这一点。 不确定,但也许我需要一个 指针指针?

提前感谢! 干杯

在 c++ 中,你可以使用 STL std::vector<>。您可以在 中声明它:

struct Data{
...
std::vector<uint8_t> values;
}

然后在方法测试中:

void test (uint8_t *buffer, size_t buffer_size)
{
...
struct Data istanceData;
for (int i=0 ; i < buffer_size; ++i){
istanceData.values.push_back(buffer[i]);
}
}

如果您想在"test"函数之外使用它,请记住动态分配结构数据(并返回它的指针(。 你也可以将一个额外的参数传递给 "test" 函数,并通过以下方式传递带有引用的 istanced 结构数据:

void test (uint8_t *buffer, size_t buffer_size, struct Data &instanceData)
{
...
for (int i=0 ; i < buffer_size; ++i){
istanceData.values.push_back(buffer[i]);
}
}