Прототип функции calloc:
void * calloc( size_t number, size_t size );
Название | Язык |
---|---|
stdlib.h | С |
cstdlib | С++ |
Описание
Функция calloc
выделяет блок памяти для массива размером — num элементов, каждый из которых занимает size
байт, и инициализирует все свои биты в нулями.
В результате выделяется блок памяти размером number * size
байт, причём весь блок заполнен нулями.
Параметры:
- number
Количество элементов массива, под который выделяется память.
- size
Размер одного элемента в байтах.
Возвращаемое значение
Указатель на выделенный блок памяти. Тип данных на который ссылается указатель всегда void*
, поэтому это тип данных может быть приведен к желаемому типом данных.
Если функции не удалось выделить требуемый блок памяти, возвращается нулевой указатель.
Пример: исходный код программы
//пример использования функции calloc #include <iostream> #include <cstdlib> int main() { int size; std::cout << ("Введите количество элементов: "); std::cin >> size; int * arrayPtr = (int*) calloc(size,sizeof(int)); // выделяем память под динамический массив целых чисел if (arrayPtr == NULL) exit (1); // завершить работу программы for (int ix = 0; ix < size; ix++) // в цикле заполняем массив с клавиатуры { std::cout << ("Введите число: "); std::cin >> arrayPtr[ix]; } std::cout << "Введённые числа: "; for (int ix = 0; ix < size; ix++) // в цикле выводим элементы массива на стандартное устройство вывода std::cout << arrayPtr[ix] << " "; free (arrayPtr); // удаляем динамический массив чисел return 0; }
Пример работы программы
Эта программа просто хранит в памяти числа, а затем печатает их. Но количество элементов массива может изменяться по мере необходимости их использования, так как функция calloc
выделяет столько динамической памяти, сколько необходимо программе, не больше не меньше.
Введите число: -3
Введите число: -2
Введите число: -1
Введите число: 0
Введите число: 1
Введите число: 2
Введите число: 3
Введённые числа: -3 -2 -1 0 1 2 3
Комментарии