TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Juan_PIC en 12 de Enero de 2008, 20:23:39

Título: una ayudita con este programa
Publicado por: Juan_PIC en 12 de Enero de 2008, 20:23:39
Hola me salio una duda con el siguiente programa para comunicacion serial.


struct animal { char code;
char name[8];
int count; };

#define MAX 3

struct animal animals[MAX] = {{‘A’,”Ant”,0},
                                            {‘B’,”Bird”,0},
                                            {‘C’,”Cat”,0}};

int find(char code, int & index) {            \\ aca es donde me hago el problema, no entiendo lo que hace    "int & index". Si alguien me puede ayudar lo agradeceria
for(index=0;index<MAX;index++)         \\ otra pregunta... que es lo que repite el FOR? el IF? el IF y los RETURN?
if(animals[index].code==code)
return(TRUE);
return(FALSE);
}

main() {
int index;
char code;
while(TRUE) {
printf(“\r\nEnter the code: “);
code=getc();
if(find(code,index)) {
animals[index].count++;
printf(“\r\nYou now have %u %s’s\r\n”,
animals[index].count,
animals[index].name);
} else
printf(“\r\nCode not valid\r\n”);
}
}

Gracias por su colaboracion!
Título: Re: una ayudita con este programa
Publicado por: Modulay en 12 de Enero de 2008, 20:33:42
Lo normal sería que estuviera escrito así:

int find(char code, int &index)

El "&" indica que lo que se pasa como parámetro no es el valor de la variable,si no su posición en memoria,y así la función trabaja directamente con lo que hay en esa posición de memoria.Se hace así cuando la variable puede cambiar de valor dentro de la rutina.
Si el parámetro no lleva el "&",el compilador hace una copia de la variable original y trabaja con esa copia.
El "for" yo diría que engloba sólo al primer "return" aunque posiblemente me equivoque.
Hay que acostumbrarse a poner siempre las llaves que delimitan las estructuras del código,así se evitan confusiones y hace el código más legible.
Título: Re: una ayudita con este programa
Publicado por: Juan_PIC en 12 de Enero de 2008, 20:54:55
Este es un ejemplo que encontre en un manual, a mi tambien me parecion algo desprolijo  :?

A ver si entendi bien... si no estuviera el "&" la funcion de arriba usaria lo que esta almacenado en index, y por mas que lo cambie, cuando vuelva a la funcion principal, index va a tener el mismo valor que cuando se llamo a la otra funcion...

En cambio, con el "&", esta funcion si cambia el valor de index, al regresar a la funcion principal, index no va a tener el valor de antes, sino el nuevo valor...


Entendi bien?

Gracias por tu ayuda!!!
Título: Re: una ayudita con este programa
Publicado por: Modulay en 12 de Enero de 2008, 21:02:22
Eso es.
Es la diferencia entre lo que se llama parámetro de entrada (sin el &) y parámetro de entrada-salida (con el &)
Título: Re: una ayudita con este programa
Publicado por: Juan_PIC en 13 de Enero de 2008, 13:33:59
Wiiiiiii  :mrgreen: Muchas gracias Modulay!! :-)