Загрузка...

Динамическое выделение памяти под массив Си

Тема в разделе C/C++ создана пользователем RaysMorgan 8 окт 2016. 1061 просмотр

Загрузка...
  1. RaysMorgan
    RaysMorgan Автор темы 8 окт 2016 https://lolz.live/support-tickets/open 51 794 7 мар 2013
    Выделение памяти в языке Си - основа всего.
    Для выполнения этой задачи есть 2 функции calloc и malloc

    В чем разница?
    Calloc гарантировано выделяет память под объект нужного типа, чаще используется при работе со строковыми массивами.
    Malloc выделяет память, но чаще используется для работы с объектами типа int, float.

    Рассмотрим пример
    Код

    // Создадим указатель на массив и переменную N
    char **massiv;
    int N;
    char buffer[100];
    // Спросим у пользователя сколько нужно выделить памяти под массив
    printf("Введите количество элементов массива N: ");
    scanf("%d", &N);
    // Выделяем память под строковый массив
    massiv = (char**)calloc(N, sizeof(char*));

    Теперь, когда мы заполняем элемент чем-то, то должны выделить память под него. Рассмотрим на примере ввода имени в первый элемент массива
    Код

    printf("\nВведите свое имя: ");
    // Помещаем имя во временную переменную буфер (строку)
    scanf("%s", buffer);
    // Выделяем память
    massiv[0] = (char*)calloc(strlen(buffer)+1, sizeof(char));
    // Копируем буфер в массив[0]
    strcpy(massiv[0], buffer);


    P.S. Для работы со строковыми функциями (например, strcpy, strcompare) используйте библиотеку #include <string.h>
     
  2. redhowlx
    redhowlx 10 мар 2017 3 9 мар 2017
    Спасибо,большое помогли мне !
     
Top