WEll, malloc is the c equivalent of new. With m alloc you can allocate a chunk of memory at runtime and since it's allocated at runtime it's obviously stored in a heap.
So you can do something like take input from user and create an array of that size
int * k = malloc(sizeof(int[n]);
It returns a pointer to the memory location and you have to free the memory before the program ends.