Создать динамический массив в структуре - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите создать динамический массив в структуре. Я туплю и не могу догнать, как это сделать

Решение задачи: «Создать динамический массив в структуре»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. typedef struct /*создаем структуру*/
  5. {
  6.     int * mass;
  7. }Str;
  8. int main(void)
  9. {
  10.     Str strct; /* объявляем ее */
  11.     int size; /* переменная для размера */
  12.     printf("Please enter size of massive: ");
  13.     scanf("%d",&size);
  14.     strct.mass=(int*)malloc(sizeof(int)*size); /* создаем динамический массив с введенным размером. Просим память у системы */
  15.     if (strct.mass==0) /* Если система не дала памяти под массив, выходим */
  16.     {
  17.         puts("No memory");
  18.         return 1;
  19.     }
  20.     printf("Massive created on adress %p size %d of %d bytes\n",strct.mass,size,sizeof(int)*size);
  21.  
  22.     /* выполняете с массивом какие-то действия */
  23.  
  24.     free(strct.mass); /* после работы с массивом, вернем память системе */
  25.     puts("Memory free!");
  26.     return 0; /* не забывайте про return 0! */
  27. }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с памятью и вводом/выводом данных
  2. Создаем структуру Str с одним полем - динамическим массивом int типа
  3. В функции main() объявляем экземпляр структуры Str и переменную для хранения размера массива
  4. Запрашиваем у пользователя размер массива с помощью функции scanf()
  5. Выделяем память под динамический массив с помощью функции malloc() и сохраняем указатель на массив в поле mass структуры Str
  6. Проверяем успешность выделения памяти с помощью оператора сравнения if. Если память не выделена, выводим сообщение об ошибке и завершаем программу
  7. Выводим сообщение о создании массива с указанием адреса и размера, а также выводим размер в байтах, рассчитанный как произведение размера одного элемента на количество элементов
  8. В данном примере не выполняем никаких действий с массивом, но можно добавить какой-либо код для работы с массивом
  9. Освобождаем выделенную память с помощью функции free() и выводим сообщение об освобождении памяти
  10. Возвращаем 0 из функции main(), чтобы программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы