Dynami c выделение структуры - PullRequest
0 голосов
/ 13 января 2020

Мне нужно выделить структуру динамически. У меня есть структура с переменными этого типа:

int num;
char name[10];
float yep;

Мне нужно взять на вход число i давайте предположим, i=4. Итак, что мне нужно сделать, это взять в 4 раза значения num, name и yep и сохранить их в динамически распределенном массиве. Как мне этого добиться?

1 Ответ

0 голосов
/ 13 января 2020

Поскольку это тег c99, я подумал о том, чтобы добавить в стандарт что-то интересное, основываясь на том, что вы просили (правка: массивы переменной длины - спасибо, @underscore_d). Есть кое-что заполнить, но это может помочь вам начать. Другой подход заключается в использовании mallo c для извлечения памяти для структур из кучи, в отличие от стека (используя эффективно alloca), как мы делаем ниже. HTH:

#include <stdio.h>

typedef struct {
    int num;
    char name[10];
    float yep;
} mystruct;

void do_something_with_n_structs(int n) {
    mystruct structs[n];
    int idx;
    for (idx = 0; idx < n; ++idx) {
        // fill this bit in
    }
}

int main() {
    int n = 0;
    printf("Enter a number: "); fflush(stdout);
    scanf("%d", &n);
    do_something_with_n_structs(n);
    return 0;
}
...