Создать динамический массив в структуре - 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(), чтобы программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д