结构如何在C中动态分配成员?

时间:2020-02-11 14:24:58

标签: c data-structures struct dynamic malloc

我尝试使用以下代码将对象动态分配为结构的成员:

#include <stdlib.h>
#define width 4

struct foo{
     int* p1 = malloc(sizeof(*p1) * width);   
};

但是clang和gcc编译器都抛出错误:

error: expected ':', ',', ';', '}' or '__attribute__' before '=' token

当我尝试编译代码时;这里是链接:https://godbolt.org/z/-Sy6CK

我的问题:

  • 如何创建在C中动态分配成员的结构?

2 个答案:

答案 0 :(得分:4)

或者这个:

struct foo{
     int* p1;
};

int main()
{
  struct foo bar = {.p1 = malloc(sizeof(*bar.p1) * width)};
}

int main()
{
    struct {
        int* p1;
    } bar = {.p1 = malloc(sizeof(*bar.p1) * width)};
}

答案 1 :(得分:3)

您想要这个:

#include <stdlib.h>
#define width 4

// declaration, you can't do initialisation here
struct foo{
     int* p1;
};

int main()
{
  struct foo bar;

  bar.p1 = malloc(sizeof(*bar.p1) * width);   
}