Как структура может иметь динамически распределенные элементы в C? - PullRequest
0 голосов
/ 11 февраля 2020

Я попытался динамически выделить объект в качестве члена структуры с помощью этого кода:

#include <stdlib.h>
#define width 4

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

, но компиляторы, clang и g cc, выдают ошибку:

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

когда я пытаюсь скомпилировать код; вот ссылка: https://godbolt.org/z/-Sy6CK.

Мой вопрос:

  • Как я могу создать структуру, которая имеет динамически размещенные элементы в C?

Ответы [ 2 ]

4 голосов
/ 11 февраля 2020

Или это:

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)};
}
3 голосов
/ 11 февраля 2020

Вы хотите это:

#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);   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...