Создать динамический массив в структуре - C (СИ)
Формулировка задачи:
Помогите создать динамический массив в структуре. Я туплю и не могу догнать, как это сделать
Решение задачи: «Создать динамический массив в структуре»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct /*создаем структуру*/
{
int * mass;
}Str;
int main(void)
{
Str strct; /* объявляем ее */
int size; /* переменная для размера */
printf("Please enter size of massive: ");
scanf("%d",&size);
strct.mass=(int*)malloc(sizeof(int)*size); /* создаем динамический массив с введенным размером. Просим память у системы */
if (strct.mass==0) /* Если система не дала памяти под массив, выходим */
{
puts("No memory");
return 1;
}
printf("Massive created on adress %p size %d of %d bytes\n",strct.mass,size,sizeof(int)*size);
/* выполняете с массивом какие-то действия */
free(strct.mass); /* после работы с массивом, вернем память системе */
puts("Memory free!");
return 0; /* не забывайте про return 0! */
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с памятью и вводом/выводом данных
- Создаем структуру
Strс одним полем - динамическим массивом int типа - В функции main() объявляем экземпляр структуры
Strи переменную для хранения размера массива - Запрашиваем у пользователя размер массива с помощью функции scanf()
- Выделяем память под динамический массив с помощью функции malloc() и сохраняем указатель на массив в поле
massструктурыStr - Проверяем успешность выделения памяти с помощью оператора сравнения
if. Если память не выделена, выводим сообщение об ошибке и завершаем программу - Выводим сообщение о создании массива с указанием адреса и размера, а также выводим размер в байтах, рассчитанный как произведение размера одного элемента на количество элементов
- В данном примере не выполняем никаких действий с массивом, но можно добавить какой-либо код для работы с массивом
- Освобождаем выделенную память с помощью функции free() и выводим сообщение об освобождении памяти
- Возвращаем 0 из функции main(), чтобы программа успешно завершилась