Cita:
Iniciado por vangodp ¿Que problema tiene declarar int vector1[tam1], vector2[tam2]; según el estándar? ¿De alguna forma hay que declararlo no?
El problema es que el estándar dice que, en estos casos, el tamaño del arreglo tiene que quedar establecido en tiempo de compilación... tu ahí estás forzando a que el tamaño se establezca en tiempo de ejecución.
Un ejemplo en el que se ve más claro:
Código C:
Ver originalint funcion( int filas, int columnas, int array[filas][columnas] )
{
int i, j;
for ( i=0; i < filas; i++ )
{
for ( j=0; j < columnas; j++ )
{
}
}
}
¿Me podrías decir cómo puede el compilador saber en este código cuánto vale "columnas" para calcular los saltos correctamente? No puede. Es algo que queda para tiempo de ejecución y solo en aquellos casos en los que el compilador esté preparado para ello... que como digo, al no formar parte del estándar no es algo seguro.
La forma de afrontar estos casos pasa por reservar memoria de forma dinámica con malloc.