Cita:
Iniciado por dehm Bueno, ante todo una cosa.
Hay que diferenciar entre errores y avisos(warnings).
Lo que te manda el compilador son avisos que si bien te dejan ejecutar el programa te están advirtiendo de fallos que te pueden ocasionar problemas más adelante.
Respecto a la primera duda, efectivamente, el tipo del parámetro es
const int y tú le estás enviando un
int.
El compilador te lo acepta EN ESTE CASO, porque efectivamente tu función no está modificando el contenido del array. Así que le hace un casting a const int y ejecuta la función.
Sin embargo prueba a meter dentro de la función una sentencia que sí modifique el array, algo tipo:
El
warning se convierte en
error y directamente no te dejará compilar, ya que
const está protegiendo al array de modificaciones dentro de la función.
Y sobre el segundo warning igual....sólo que en este caso te debería dar error directamente, ya que la función ordenaBurbuja(int [][]) espera encontrarse con un
int y tu le envías un
const int Gracias ya entiendo un poco mejor, aunque con los arreglos de un subindice no me da estos avisos y pues creí que el arreglo bidimensional tenia algo que ver...
En fin, solo tengo otra duda general solo para que me quede un poco mas claro...
¿Se puede decir que esta bien pasar un arreglo de tipo
int a una función que la convierte en
const int siempre y cuando la función no trate de modificar el array, pero esta mal pasar un arreglo
const int a una funcion que recibe como parámetro al arreglo de tipo
int?
Es decir ¿Se puede hacer un casting de
int a
const int pero es incorrecto hacerlo viceversa? eso es lo que entendi