Índice

Tuplas y funciones

1. Devolver una tupla

Tupla:devolver

Como la copia de tuplas está permitida, las tuplas se pueden considerar como valores de retorno. Sea la estructura coord:

struct coord{ 
    int x, y; 
};

A continuación se muestra una función típica que permite inicializar una tupla después de su declaración sin importar en qué parte del programa se encuentra:

    struct coord inicializa_punto1() 
    { 
        struct coord t0; 
        t0.x = rand()%1024; 
        t0.y = rand()%768; 
        return t0; 
    }

En la función:

  • Se declara una tupla del tipo deseado.

  • Cada uno de los campos se inicializa con valores aleatorios o calculados.

  • Para finalizar, se devuelve la tupla resultante al contexto de la llamada.

Por supuesto, los valores pueden ser pasados por parámetro, tal y como muestra el siguiente ejemplo:

struct coord inicializa_punto2(int x, int y) 
{ 
    struct coord t0; 
    t0.x = x;  
    t0.y = y; 
    return t0; 
}

Y en el programa la tupla devuelta por la función se asigna a una tupla del contexto de la llamada:

#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
    struct coord pt1, pt2; 
 
    pt1 = incializa_punto1(); 
    pt2 = inicializa_punto2(40, 40); 
    printf("pt1.x=%d, pt1.y=%d\n" 
          "pt2.x=%d, pt2.y=%d\n",pt1.x,pt1.y,pt2.x, pt2.y); 
    return 0; 
}

La llamada a inicializa_punto1() devuelve una tupla coord inicializada con valores aleatorios y se asigna a la variable coord pt1. La llamada a inicializa_punto2() ...