динамическая память...
функция в си -- void * malloc ( size_t size ) выделяет память на size элементов.
пример использования
Код:
int i;
int *arr;
scanf ("%d", &i);
arr = (int*) malloc (i);
if (arr == NULL) exit (1); // проверка на (в данном случае) не правильность выделения памяти
/*
работа как с обычным массивом
*/
free (arr);