Вот пример, очень похожий на то, что вы просите.Я нашел это здесь: http://www.cplusplus.com/reference/clibrary/cstdlib/calloc
функция calloc
void * calloc (size_t num, size_t size);
Выделение пространства для массива в памяти Выделениеблок памяти для массива из num элементов, каждый из которых имеет размер в байтах, и инициализирует все его биты нулем.
Эффективным результатом является выделение блока памяти, инициализированного нулями, (num * size)байт.
Параметры
num Количество элементов, которые должны быть выделены.size Размер элементов.
Возвращаемое значение Указатель на блок памяти, выделенный функцией.Тип этого указателя всегда void *, который может быть приведен к нужному типу указателя данных, чтобы быть разыменованным.Если функции не удалось выделить запрошенный блок памяти, возвращается указатель NULL.
Пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1920 21 22 * 1021 *
/* calloc example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i,n;
int * pData;
printf ("Amount of numbers to be entered: ");
scanf ("%d",&i);
pData = (int*) calloc (i,sizeof(int));
if (pData==NULL) exit (1);
for (n=0;n<i;n++)
{
printf ("Enter number #%d: ",n);
scanf ("%d",&pData[n]);
}
printf ("You have entered: ");
for (n=0;n<i;n++) printf ("%d ",pData[n]);
free (pData);
return 0;
}