Cita:
Iniciado por elignah Tengo una duda que no puedo comprender, y es en este paso:
Código C:
Ver originalprintf("El numero %i se repite %i veces\n", vector
[NUM_ELEMENTOS
], n
);
Estoy pidiendo que me imprima vector[NUM_ELEMENTOS] y, en vez de eso, me imprime k (del 0 al 9)! No entiendo por que!!!
Si tu declaras un array tal que
entonces reservas un espacio de NUM_ELEMENTOS de tipo entero que van a estar consecutivos. La primera posición del array viene dada por el índice 0 y la última por el índice NUM_ELEMENTOS-1, por lo que vector[NUM_ELEMENTOS] es un acceso no válido... no estás accediendo al array sino a otra cosa.
Si abrimos un poco las miras tenemos:
Código C:
Ver originalint vector[NUM_ELEMENTOS] = {1,2,1,5};
int j,i,n,k;
Todas estas variables puedne estar en la pila del programa pues son variables locales (el que estén o no depende finalmente de las optimizaciones del compilador). Normalmente el compilador procesa los parámetros de derecha a izquierda. Esto quiere decir que una vez ubicado el array en la pila el siguiente elemento puede ser k, después n, i y, finalmente, j. Si accedes a vector[NUM_ELEMENTOS] puede que leas el valor de k, si accedes a vector[NUM_ELEMENTOS+1] puede que leas el valor de n y así.
En cualquier caso yo procuraría, por el bien de tu programa, poner especial cuidado en no leer fuera de un array.
Un saludo.