我的结构如下:

struct Query {
    int     pages[];
    int     currentpage;
};

我想知道在创建结构之后是否可以设置这个数组的大小。
Query new = malloc(sizeof(struct Query));

之后,我将执行一些计算,然后告诉我pages[]需要的大小。如果pages[]需要4号,我如何设置它?

最佳答案

pages成员的类型更改为指针。

struct Query {
    int *pages;
    int currentpage;
};

struct Query *test = malloc(sizeof(struct Query));

if (test != NULL)
{
   //your calculations

   test->pages = malloc(result_of_your_calcs);
   if (test->pages != NULL)
   {
      // YOUR STUFF
   }
   else
   {
      // ERROR
   }
}
else
{
   // ERROR
}

当你将free你的结构,你必须做相反的事情。
free(test->pages);
free(test);

关于c - 是否可以在运行时设置结构内数组的大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37178921/

10-17 02:42