Обучение динамическому распределению памяти - PullRequest
0 голосов
/ 26 ноября 2018

Я студент, и я пытаюсь научить себя код.Мой вопрос:

У меня есть две структуры:

struct1{
int a;
char name[20];}

struct 2{
struct struct1 *objekt;
int number;
double dNumber;}

Я хотел динамически распределить память, чтобы создать хотя бы один новый объект (из-за отсутствия лучшего слова).Я знаю, например, что я могу выделить память с помощью malloc или calloc.Что хорошо.Но как я могу добавить новый объект динамически и через консольный ввод, не определяя новую структуру?Я полный новичок и извините.Спасибо.

1 Ответ

0 голосов
/ 26 ноября 2018

Рассмотрим следующий пример:

#include <stdio.h>
#include <stdlib.h>

struct Struct {
    int a;
    char name[20];
};

struct Struct struct1;

int main()
{
    struct Struct *struct1_p;
    struct1_p = &struct1;
    struct1.a = 1; 
    printf("struct1->a = %d\n", struct1_p->a);
    // Now let's create new structure dynamically
    struct Struct * struct2 =  malloc(sizeof(struct Struct));
    // Now check if the allocation succeeded?
    if(struct2 != NULL) { 
        //Success
        //struct2 now is a pointer to the memory which is reserved for struct2. 
        struct2->a = 2;
    } else {
        // Allocation failed
    }
    printf("struct2->a = %d\n", struct2->a);


    return 0;
}

Таким образом, имея тип нужного объекта, вы можете динамически создавать новый объект в памяти.Доступ к вновь созданному объекту через указатель, возвращаемый malloc.Помните, что malloc возвращает void*, нет необходимости явно приводить.

...