Все вышеперечисленное является рекомендуемым способом копирования данных из буфера в отдельный буфер, определенный в структуре.
И, чтобы ответить на ваш вопрос - да.Вы инициализируете массив значением указателя.Инициализация массива, как вы сделали в main с помощью «memory»: char memory [MAX_SIZE] = {0};// инициализация массива.
Выполнение memcpy () является предпочтительным способом сделать это.Также - плохая практика - возвращать локальную структуру из функции - предпочтительным способом является выделение объекта в куче и выполнение memcpy.(Хотя компилятор может оптимизировать это с дополнительным копированием) Это просто ужасная практика.
Если вы знаете структуру массива во время компиляции: другие возможности - это инициализация структуры c99 (обычно это делается в режиме ядра): mem_t memObj = {.mem = {1, 2, 3, 4, 5}};или просто: mem_t memObj = {1, 2, 3, 4, 5};(в вашем примере, поскольку это единственный член)
Примечание. При инициализации массива это похоже на обнуление остальных элементов массива - может оказаться не тем, чего вы ожидали / хотели.