как динамически выделить память под массив структур в Си
есть структура
typedef struct student {
char *name;
char number_of_group[8];
double score;
};
это лаба моя. там предполагается менюшка
printf("What would you like to do?\n");
printf("1 - input\n");
printf("2 - output\n");
printf("3 - data processing\n");
printf("4 - stop and exit\n");
там я перехожу в подменюшку для ввода
printf("What would you like to do?\n");
printf("1 - console input\n");
printf("2 - file input\n");
printf("3 - random input\n");
printf("4 - back to main menu\n");
в разных подменюшках разное считываение количества элементов поэтому в каждой надо выделить память. изначально я в мейне объявляю структуру struct student *mephist; как мне выделить динамически память подскажите пожалуйста
Ответы (1 шт):
Выделить память под структуру
struct student *mephist = malloc(sizeof(struct student));
если пишется код, который и под плюсы будет компилироваться, то где то так
struct student *mephist = (struct student *)malloc(sizeof(struct student));
Если же нужно выделить память под несколько элементов массива, тогда просто нужно домножить
int n = 100; // под 100 элементов
struct student *mephist = malloc(n*sizeof(struct student));
mephist[99] - последний элемент
также есть хорошая штука calloc
int n = 100; // под 100 элементов
struct student *mephist = calloc(n, sizeof(struct student));
calloc хорош тем, что у него кол-во элементов и размер структуры задаются отдельными параметрами и он зануляет массив (очень часто ошибки возникают из за того, что массив не был занулен и содержал мусор)