Выделение памяти для элемента структуры внутри функции

Есть простая структура :

typedef struct
{
    char* name;
    char* surname;
} data;

Внутри функции main я объявляю указатель на эту структуру и передаю один из параметров в функцию :

data* var = (data*)malloc(sizeof(data)); // Указатель на структуру.
    create(var->name);

Внутри функции пытаюсь выделить память под этот элемент и заполнить символами, но почему-то это не работает

void create(char* element)
{
    element = (char*)malloc(2 * (sizeof(char)));
    element[0] = 'a';
    element[1] = '\0';
    printf("%s", element);
}

Подозреваю, что выделяю память внутри функции под что-то другое


Ответы (1 шт):

Автор решения: Harry

Попробуйте:

data* var = (data*)malloc(sizeof(data)); // Указатель на структуру.
create(&var->name);

void create(char** element)
{
    *element = (char*)malloc(2 * (sizeof(char)));
    (*element)[0] = 'a';
    (*element)[1] = '\0';
    printf("%s", *element);
}

Вам же надо, чтобы была выделена и заполнена память именно var->name?

Кстати, если вы работаете именно в С, не С++, то приведение (char*)malloc... излишне.

→ Ссылка