Загрузка...

Dynamic memory allocation for C array

Thread in C/C++ created by RaysMorgan Oct 8, 2016. 1076 views

  1. RaysMorgan
    RaysMorgan Topic starter Oct 8, 2016 Че скажете 54,004 Mar 7, 2013
    Выделение памяти в языке Си - основа всего.
    Для выполнения этой задачи есть 2 функции calloc и malloc

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

    Рассмотрим пример
    Code

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

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

    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 Mar 10, 2017 3 Mar 9, 2017
    Спасибо,большое помогли мне !
     
Loading...
Top