Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/04/2011, 21:03
Trovaz
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 7 meses
Puntos: 9
Respuesta: Devolver varios valores en una función en C

Cita:
Iniciado por Dtc Ver Mensaje
Saludos.
Mi duda es, ¿como puedo hacer que una función devuelva varios valores?, ¿y como puedo hacer para que al llamar a esa función, cada valor se guarde en una variable ya declarada desde el principio?

Por ejemplo. Yo tengo esta función:

Código:
int taco_d_rata (int altura, int anchura)
       {
       int gordura, gato, perro;

      gordura=anchura*altura;
      gato=altura+anchura;
      perro=altura+anchura+gordura;

       return (perro);
      }
El problema es que aquí solo puedo devolver la variable temporal "perro", y al llamarla, la puedo guardar en una variable ya declarada de esta forma:

Código:
perrogordo=taco_d_rata(alta,ancha);
Pero lo que quiero es poder guardar también en otras 2 variables, las variables temporales de la función "gordura" y "gato".
¿como podría hacer esto (en lenguaje C, no C++)?

Gracias

No es posible devolver 2 variables o mas, pero puedes utilizar apuntadores de forma tal que tu pases la direccion de memoria de las variables que quieres que se modifiquen dentro de tu función.

Para esto tu función debe ser devlarada de la siguiente forma.


Código:
int taco_d_rata (int altura, int anchura, int *gordura, int *gato, int *perro)
       {

      *gordura=anchura*altura;
      *gato=altura+anchura;
      *perro=altura+anchura+gordura;

       return 0;
      }
y llamarla de una la siguiente forma.

Código:
int main(void){
     int miPerro, miGato, miGordura;
     taco_d_rata(5, 3, &miGordura, &miGato, &miPerro);
}

Con eso deberas tener el resultado de las operaciones que realizaste en tu funcion en las variables miGordura, miPerro y miGato.