RE:Redimensionamiento de arreglos
Parece que lo que quieres es dimensionar un array (lo siento, no me gusta la palabra arreglo) a un tamaño que se calcula en alguna parte de tu programa.
En efecto, un compilador C no puede hacer lo que dices (que yo sepa, en nungún lenguaje compilado puedes), por lo que, en principio, los arrays los tienes que dimensionar en tiempo de compilación (indicando la dimensión en la declaración, por ejemplo, int x[10] declararía un array x de 10 números enteros.
Afortunadamente, C permite hacer una pequeña 'trampa' para lo que quieres: Utilizar punteros. Se ha`'ia de la siguiente forma:
int *x; // Declaramos un puntero a número entero
// Ahora necesito un array de n números enteros
// El valor de n lo he calculado en alguna parte de mi programa
x = (int *)malloc(n*sizeof(int));
La función malloc reserva el número de bytes indicado (en este caso, como necesito n enteros, necesitaré multiplicar n por el tamaño de un entero, para lo cual utilizo el operador sizeof). Como esta función devuelve un puntero a tipo void, es necesario hacer un typecast.
Ojo, que el contenido del espacio así reservado está indeterminado, no des por sentado que se inicia a cero.
Otra forma de hacerlo sería:
x = (int *)calloc(n, sizeof(int));
Básicamente, hace lo mismo que malloc, pero en este caso se ha reservado directamente espacio para n números enteros y se han inicializado a cero. El typecast sigue siendo necesario.
Ten en cuenta que, estrictamente, x NO es un array. C tiene la ventaja (o el inconveniente para algunos) de que, una vez que se ha asignado un área de memoria a un puntero, éste puede utilizarse como si fuese un array.
Cuando dejes de necesitar la memoria así reservada, debes liberarla:
free(x);
libera la memoria asignada al puntero x (da igual que se la hayas asignado con malloc o con calloc).
Ten siempre presente la liberación de la memoria asignada, i te descuidas te puedes encontrar con que tu programa va agotando poco a poco la memoria disponible.
En cualquier caso, es conveniente que te busques una buena bibliografía y que entiendas bien el concepto de punteros.
Espero que todo este rollo te haya servido de ayuda. Saludos,
PACO.