Foros del Web » Programación para mayores de 30 ;) » C/C++ »

diferencia * y &?

Estas en el tema de diferencia * y &? en el foro de C/C++ en Foros del Web. Hola!, querría saber la diferencia que existe entre estas dos versiones de función "registrotemp" de un programa para registrar las temperaturas más alta y más ...
  #1 (permalink)  
Antiguo 13/09/2008, 03:45
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
diferencia * y &?

Hola!, querría saber la diferencia que existe entre estas dos versiones de función "registrotemp" de un programa para registrar las temperaturas más alta y más baja de un día determinado.

struct temperatura {
float alta;
float baja;
};

int main ()
{
temperatura temp;
registrotemp(temp);
}



void registrotemp(temperatura &t)
{
float actual;
leertemperatura(actual);
if (actual>t.alta)
t.alta=actual;
else if (actual<t.baja)
t.baja=actual;
}



void registrotemp(temperatura *t)
{
float actual;
leertemperatura(actual);
if (actual>t->alta)
t->alta=actual;
else if (actual<t->baja)
t->baja=actual;
}





Gracias!
  #2 (permalink)  
Antiguo 13/09/2008, 03:56
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: diferencia * y &?

En el primero (&) estás diciendo que t es un objeto de temperatura pasado por referencia, eso es: todo cambio en t dentro de la función afecta a la temperatura que se ha pasado como ese parámetro sea dónde sea que se ha invocado.

En el otro t es un puntero. Sin embargo, como los punteros por defecto se pasan por referencia, en tu caso ambas funciones tendrán el mismo efecto, o por lo menos deberían. Puede que algún compilador no los pase por referencia por defecto, pero me extrañaría.
__________________
Un Lannister siempre cumple sus promesas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:06.