【问题标题】:Fill Array of unspecified Size with data用数据填充未指定大小的数组
【发布时间】:2020-04-07 19:25:45
【问题描述】:

所以我现在正在学习 C++,我现在很困。我已经在 Internet 表单中研究了一段时间,但找不到解决我的问题的方法。也许是因为我不知道要照顾什么..

对于可能具有误导性的标题,请原谅,但问题是:

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

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

现在我有一个方法测试

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

}

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

提前致谢! 干杯

【问题讨论】:

标签: c++ arrays pointers variable-assignment


【解决方案1】:

在 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”函数,并以这种方式将 istanced Struct Data 与引用一起传递:

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]);
    }
}

【讨论】:

  • 如果有用请投票
  • 不能,我还没有足够的声望
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
相关资源
最近更新 更多