【发布时间】:2016-09-07 19:35:05
【问题描述】:
我的结构如下:
struct Query {
int pages[];
int currentpage;
};
我想知道是否可以在创建结构后设置这个数组的大小。
Query new = malloc(sizeof(struct Query));
之后,我将执行一些计算,然后告诉我pages[] 需要的大小。如果pages[] 需要大小为 4,我该如何设置?
【问题讨论】:
-
int pages[];-->int *pages;然后malloc-吃掉它。请记住,页面必须在整个结构free之前为freeed。 -
在其他语言中,您可以为结构创建构造函数。不确定c。但我认为这是要走的路。
-
让
pages成为一个 int 指针。这样,您可以在创建结构后使用 malloc 在堆中为其分配内存。 -
这个结构是非法的。灵活数组成员必须是最后一个元素。然后就可以调整大小了。