Vectores con registros. Registros con vectores

Los tipos y los mecanismos de definición de tipos pueden combinarse libremente según las necesidades. Podemos crear vectores donde cada componente es un registro que almacena múltiples datos de distintos tipos. A su vez, esos campos podrían ser también vectores o registros anidados.

De la misma manera, un registro puede contener campos que sean vectores, siendo cada componente lo que mejor sirva al problema.

Ejemplo: Un sistema de gestión hospitalaria podría incluir un vector de hospitales, donde cada hospital es un registro con nombre, dirección, un vector de médicos, un vector de pacientes y un vector de habitaciones. Cada uno de estos sería a su vez un registro con la información relevante.

Para acceder a estructuras anidadas se encadenan los operadores. Por ejemplo:

hospitales[36].médicos[17].especialidad

accede a la especialidad del médico 17 del hospital 36.

Registros en C: paso de parámetros por referencia

Cuando se pasa un struct como parámetro por referencia a una función, el acceso a sus campos se hace con el operador -> en lugar de .:

typedef struct{
    int i;
    float f;
} MITIPO;

void miFuncion(MITIPO *miParametro) {
    
    miParametro->i = 3;
    miParametro->f = 6.0;
}

main() {
    
    MITIPO miVariable;
    
    miFuncion(&miVariable);
    
}