错误:聚合对象应初始化为“ {...}”-C ++

pis*_*tal 5 c++ data-structures

struct test
{
    unsigned int test1;
    unsigned char test2[4096];
    unsigned int test3;
} foo

struct foobar
{
unsigned char data[4096];
}
Run Code Online (Sandbox Code Playgroud)

如果我想访问该结构,则说foo.test1,foo.test2 [4096]等。但是,当我希望以以下方式返回foo.test2中存在的数据时

pac.datafoo = foo.test2[4096];

unsigned char data[4096] =  pac.datafoo;
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

error: initialization with "{...}" expected for aggregate object
Run Code Online (Sandbox Code Playgroud)

我在做什么错?

小智 5

您需要学习数组初始化方法。它不是简单地分配为单个变量。

一些例子:

int arrayone[3] = {0}; // assign all items with 0

int arraytwo[3] = {1, 2, 3 }; // assign each item with 1, 2 and 3

int arraythree[3]; // assign arraythree with arraytwo
for (int i = 0; i < 3; ++i) {
    arraythree[i] = arraytwo[i];
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意“int arrayone[3] = {0};”,它仅分配所有元素“0”,因为这是默认值,这就是最后两个元素的构造方式。同样的意义,`int a[3] = {};`将它们全部赋给`0`;然而,这里的重要区别是“int a[3] = {2};”*不*将它们全部分配为“2” - 第一个元素分配为“2”,其他元素默认构造为“0” (3认同)