Para poder declarar este tipo de arreglos en tiempo de ejecucion, necesitas auxiliarte de las funciones malloc, calloc y realloc. Y utilizar punteros, en este caso un puntero a un entero, entonces esto deberia de ser algo asi.
Código c:
Ver originalint *miArreglo;
int n = 10; //los elementos que necesites
miArreglo
= malloc(n
* sizeof(int));
Como sabes el puntero o apuntador simplemente apunta a una localidad de memoria, pero al ser de tipo int cada incremento que le hagas en realidad cambiara el puntero sizeof(int) posiciones.
Digamos que tienes un apuntador "miApuntador" a la localidad de memoria 6000, y si un int (en la mayoria de los ordenadores) utiliza 4 bytes en memoria, entonces al aumentar uno a tu apuntador (esta operacion muchos la hacen asi: miApuntador[1]), te estaras posicionando en la localidad de memoria 6004, que es donde puedes almacenar tu siguiente entero, y asi consecutivamente.
Por lo que puedes utilizar esto como si fuera un arreglo de enteros.
Espero haberte sido de ayuda
Saludos++