No es un bug, es una característica no documentada

4/11/14

Estructuras de datos dinámicas en C (IV)

19:13 Posted by Inazio , No comments
Vectores con registros. Registros con vectores

Los tipos y los mecanismos para definir tipos los puedo combinar a mi antojo según mis necesidades.

Por ejemplo, podría tener un vector (o una matriz, incluso de dimensión superior a tres), para la que cada componente fuera un registro que guardara varios datos de tipos diferentes. Uno de ellos podría ser a su ve otro vector, u otro registro, y así sucesivamente.

También podría tener un registro y que uno de sus campos fuera un vector pudiendo ser cada componente lo que me pudiera interesar, según el problema a resolver.

Por ejemplo, podría tener un vector de hospitales, cada hospital ser un registro donde guardo nombre, dirección, y un vector de médicos que trabajan en él, otro vector de pacientes que estoy atendiendo y otro más de habitaciones. Cada una de esas componentes sería de nuevo un registro con la información relevante que quisiera guardar sobre ellos.

El acceso a estas estructuras de datos se realiza ordenando operadores, por ejemplo, podría encontrar en mi programa expresiones como:
hospitales[36], médicos[17], especialidad

Estaría accediendo a la especialidad que tiene el médico 17 en el hospital 36.

Registros en C. Veámoslo con ejemplos

Cuando pasemos de parámetros de tipo struct por referencia dentro de la función, la forma de acceder a cada campo sería usando -> en vez de ‘.’.

       typefef struct{

            int i;
            float f;
       }MITIPO;

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

       main() {
            …
            MITIPO.miVariable;
            …
            miFuncion(&miVariable);
                        ... miVariable1 …
            …

       }

0 comments:

Publicar un comentario