Есть массив структур в автоматической памяти. Нужно перенести его в динамическую память - C (СИ)
Формулировка задачи:
student* transfer (student* s[])
{
student* s1[15];
int i;
for (i = 0; i < 15; i++)
{
s1[i] = malloc (sizeof(student));
if (s1 == NULL)
{
return NULL;
}
*s1[i] = s[i];
}
return s1;
}Решение задачи: «Есть массив структур в автоматической памяти. Нужно перенести его в динамическую память»
textual
Листинг программы
student* transfer (student s[], size_t size)
{
student* students = malloc (size*sizeof(student));
if (s1 == NULL)
return NULL;
for (size_t i = 0; i < size; i++)
students[i] = s[i];
return students;
}
Объяснение кода листинга программы
- Входные данные: s[] - массив структур типа student, size - размер этого массива.
- Выделение памяти под массив указателей на структуры student с помощью malloc: student students = malloc (sizesizeof(student));
- Проверка на успешное выделение памяти: if (s1 == NULL) return NULL;
- Копирование элементов из массива s[] в массив students[] с помощью цикла for: for (size_t i = 0; i < size; i++) students[i] = s[i];
- Возврат указателя на выделенный массив студентов: return students;