c - 如何在匿名成员中存储结构数组?

标签 c struct c99

我有一组结构想要存储在匿名成员结构中。每个小结构如下所示:

static struct {
    uint16_t buf[256];
} bufData[8];

我知道事实上它只有 8 个元素。我想将其包含在另一个结构中,如下所示:

static struct {
    int size;
    // I am not sure how to proceed
    //char * bufData;
    //struct * bufData;
} Table[MAX_FILES];

当前正在输入数据:

  for (int i = 0; i < 8; i++) {
        loadData(i,bufData[i].buf);
        printf("%s\n", bufData[i].buf); // This works
    }

我想将其存储在 Table 的第 j 个元素中,例如 Table[j].bufData。目前我已经尝试过

memset(bufData, 0, sizeof(bufData));
Table[j].size = 256;
Table[j].bufData = &bufData;

然后解压,还是不行。

char * test = Table[j].bufData;
for (int i = 0; i < 8; i++) {
    printf("%s\n", test[i].buf);
}

我想我已经严重损坏了这个,我需要一些帮助来解决它!

最佳答案

由于 bufData 是一个结构体,因此您应该将其存储为 bufData 指针(而不是 char 指针),或者简单地存储为数组bufData:

struct BufData /* this declares a type, not a variable */
{
    uint16_t buf[256];
};

选项 1:

static struct 
{
    int size;
    struct BufData* myBufData;
} Table[MAX_FILES];

选项 2:

static struct 
{
    int size;
    struct BufData myBufData[8];
} Table[MAX_FILES];

编辑: 声明结构时,不要混淆声明类型:

struct aStruct
{
...
};

声明具有未命名结构类型的变量:

struct 
{
...
} aVariable;

同时声明类型和该类型的变量:

struct aStruct
{
...
} aVariable;

关于c - 如何在匿名成员中存储结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9462961/

相关文章:

c - strcat 问题 [C for unix]

c - C 中的深度复制数组... malloc?

c++ - 为什么 `const` 会作用于它之前的那个东西?

c - 为结构体赋值

c - 结构体变为NULL

c - `recv` 是否适用于字节或八位字节,或者它们在 POSIX 文档的上下文中是否相同?

将数据复制/扫描/读取到未初始化的指针时崩溃或 "segmentation fault"

c - C99 中的哪一节说数组在 C 中没有复制地传递给函数?

C99, "Despite the name, a non-directive is a preprocessing directive."

xml - 将嵌套的 xml 解码为结构