elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No entiendo este error de compilación
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No entiendo este error de compilación  (Leído 2,599 veces)
Noob_boy

Desconectado Desconectado

Mensajes: 6


Ver Perfil
No entiendo este error de compilación
« en: 5 Enero 2016, 17:53 pm »

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
Código
  1. #include <stdio.h>
  2.  
  3. void orden(int arr){
  4. int aux,i,j;
  5. int tam=sizeof(arr)/sizeof(*arr);
  6.  
  7. for(i=0;i<tam;i++){
  8. for(j=0;tam-i;j++){
  9. if (arr[j]>arr[j+1]){
  10. aux=arr[j];
  11. arr[j]=arr[j+1];
  12. arr[j+1]=aux;
  13. }
  14. }
  15. }
  16. }
  17.  
  18. int main(){
  19. int vec[]={9,3,5,7,1};
  20. orden(vec);
  21. }

Gracias por adelantado.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: No entiendo este error de compilación
« Respuesta #1 en: 5 Enero 2016, 17:58 pm »

Pusiste "int arr". Querrías decir "int arr[]"


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: No entiendo este error de compilación
« Respuesta #2 en: 5 Enero 2016, 21:47 pm »

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
Código
  1. for(j=0;tam-i;j++){
debe poner
Código
  1. for(j=0;j<tam-i;j++){
En línea

Noob_boy

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: No entiendo este error de compilación
« Respuesta #3 en: 6 Enero 2016, 16:10 pm »

Muchas gracias ivancea96 y MAFUS :), ahora no entiendo porque el tamaño del vector es diferente en la función que en main :-X
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: No entiendo este error de compilación
« Respuesta #4 en: 6 Enero 2016, 21:24 pm »

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.
« Última modificación: 6 Enero 2016, 21:37 pm por MAFUS » En línea

Noob_boy

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: No entiendo este error de compilación
« Respuesta #5 en: 8 Enero 2016, 14:03 pm »

ya veo que efectivamente coinciden. Gracias de nuevo por la lección  :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
no entiendo este error en asm con gcc, que puede estar mal?
Programación C/C++
Belial & Grimoire 2 3,295 Último mensaje 17 Mayo 2010, 11:33 am
por Foxy Rider
No entiendo este error al compilar :S
Programación C/C++
Destro- 2 2,731 Último mensaje 10 Noviembre 2011, 04:35 am
por Destro-
No entiendo este error
PHP
Xedrox 4 10,216 Último mensaje 6 Febrero 2012, 21:52 pm
por Xedrox
No entiendo que quiere decir este error de compilación!!!!!
Programación C/C++
pablombf 1 1,913 Último mensaje 4 Enero 2018, 14:16 pm
por Becerra
No entiendo este error - Ayuda
Programación C/C++
Cero++ 5 2,119 Último mensaje 24 Diciembre 2018, 16:54 pm
por Cero++
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines