锯齿状数组在C-中的实现错误:预期为';'在声明列表的末尾

时间:2018-11-13 04:57:10

标签: c jagged-arrays

我写了一段如下的C代码:-

typedef struct {
    unsigned int buffer_ctrl[4];
    unsigned int buffer1[10];
    unsigned int buffer2[40];
    unsigned int buffer3[20];
    unsigned int buffer4[15];
    unsigned int *buffer_ptr[4] = {buffer1, buffer2, buffer3, buffer4};
    unsigned int canary[4];
} buffer_t;

我将其写在主代码中包含的头文件中。我已经阅读了很多有关C语言中锯齿状数组的示例,并认为这样可以很好地工作。链接之一是Do jagged arrays exist in C/C++?

但是,当我编译时,出现错误“ expected';”在声明结束时”。有人可以帮忙解释一下这里的错误吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

您不能在buffer_ptr结构本身的定义内分配给buffer_t。您必须先定义buffer_t类型的变量,然后再分配给它。

您可以执行以下操作:

buffer_t bt = {
    .buffer_ptr[0] = bt.buffer1,
    .buffer_ptr[1] = bt.buffer2,
    .buffer_ptr[2] = bt.buffer3,
    .buffer_ptr[3] = bt.buffer4
};