Создать динамический массив в структуре - 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! */
}

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

  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
Похожие ответы