/* Ejemplo de Uniones */ #include #include /* Todos los campos comparten la misma zona de memoria */ union EjemploU { char msg[8]; short dato; float cifra; char car; }; /* Cada campo tiene su propio espacio en la memoria */ struct EjemploS { char msg[8]; short dato; float cifra; char car; }; /* Estructura con una parte fija los 3 primeros campos y una parte variable */ struct Mixta { char msg[8]; short dato; union { float cifra; char car; } var; }; main() { union EjemploU EU1; struct EjemploS ES1; struct Mixta EM1; // Tamaņo, modifico y muestro la UNION printf(">Tamaņo de la union = %d \n" ,sizeof(EU1)); strcpy(EU1.msg,"Hola"); EU1.dato = 10; EU1.cifra = 934443.432E-02; EU1.car = 'A'; printf(" Cadena = %.8s, Entero = %4d, Real = %4f, Letra = %c \n", EU1.msg, EU1.dato, EU1.cifra, EU1.car ); getchar(); // Tamaņo, modifico y muestro la estructura printf(">Tamaņo de la estructura = %d \n",sizeof(ES1)); strcpy(ES1.msg,"Hola"); ES1.dato = 10; ES1.cifra = 934443.432E-02; ES1.car = 'A'; printf(" Cadena = %.8s, Entero = %4d, Real = %4f, Letra = %c \n", ES1.msg, ES1.dato, ES1.cifra, ES1.car ); getchar(); // Tamaņo, modifico y muestro la estructura mixta printf(">Tamaņo de la estructura Mixta = %d \n",sizeof(EM1)); strcpy(EM1.msg,"Hola"); EM1.dato = 10; EM1.var.cifra = 934443.432E-02; EM1.var.car = 'A'; printf(" Cadena = %.8s, Entero = %4d, Real = %4f, Letra = %c \n", EM1.msg, EM1.dato, EM1.var.cifra, EM1.var.car ); getchar(); }