Buenas a todos, pues os explico estaba intentando hacer una función que realice el algoritmo de ordenación burbuja, pero me salta un error de compilación en la línea 5 que no entiendo, dice " invalid type argument of unary '*' (have 'int')"
El código es
#include <stdio.h>
void orden(int arr){
int aux,i,j;
int tam=sizeof(arr)/sizeof(*arr);
for(i=0;i<tam;i++){
for(j=0;tam-i;j++){
if (arr[j]>arr[j+1]){
aux=arr[j];
arr[j]=arr[j+1];
arr[j+1]=aux;
}
}
}
}
int main(){
int vec[]={9,3,5,7,1};
orden(vec);
}
Gracias por adelantado.
Pusiste "int arr". Querrías decir "int arr[]"
Imprime el valor sizeof arr dentro de la función orden y comparalo con el valor sizeof vec de main, puede que te lleves una sorpresa.
Después, línea 8, donde pone
for(j=0;tam-i;j++){
debe poner
for(j=0;j<tam-i;j++){
Muchas gracias ivancea96 y MAFUS :), ahora no entiendo porque el tamaño del vector es diferente en la función que en main :-X
Cuando una función recibe como argumento un array, lo que hace C es transformar ese argumento en un puntero. Como ya no se tiene un array -no son objetos iguales, aunque se parecen un poco trabajan de forma diferente- esa información del tamaño ha desaparecido.
Si todavía no has borrado tu programa en la función 'orden' imprime el resultado de sizeof(int*) y compáralo con el sizeof arr.
ya veo que efectivamente coinciden. Gracias de nuevo por la lección :D