Unión Anónima y Estructura en C

En C11 estándar de C, se agregaron Uniones y estructuras anónimas. 
Las uniones/estructuras anónimas también se conocen como uniones/estructuras sin nombre, ya que no tienen nombres. Como no hay nombres, no se crean objetos directos (o variables) de ellos y los usamos en estructuras anidadas o uniones. 
La definición es como la de una unión normal solo que sin nombre o etiqueta. Por ejemplo, 

// Anonymous union example
union 
{
   char alpha;
   int num;
};
// Anonymous structure example
struct 
{
   char alpha;
   int num;
};

Como no hay variable ni nombre, podemos acceder directamente a los miembros. Esta accesibilidad solo funciona dentro del ámbito donde se define la unión anónima. 
A continuación se muestra un ejemplo de trabajo completo de unión anónima.

C

// C Program to demonstrate working of anonymous union
#include <stdio.h>
struct Scope {
    // Anonymous union
    union {
        char alpha;
        int num;
    };
};
 
int main()
{
    struct Scope x, y;
    x.num = 65;
    y.alpha = 'A';
 
    // Note that members of union are accessed directly
    printf("y.alpha = %c, x.num = %d", y.alpha, x.num);
 
    return 0;
}

Recuerda que solo podemos acceder a un miembro de un sindicato a la vez. Si se asigna otro miembro, el miembro anterior será eliminado del sindicato.

Producción

x.alpha = A, x.num = 65

C

// C Program to demonstrate working of anonymous struct
#include<stdio.h>
struct Scope
{
    // Anonymous structure
    struct
    {
        char alpha;
        int num;
    };
};
 
int main()
{
    struct Scope x;
    x.num = 65;
    x.alpha = 'B';
 
    // Note that members of structure are accessed directly
    printf("x.alpha = %c, x.num = %d", x.alpha, x.num);
 
    return 0;
}
Producción

x.alpha = B, x.num = 65

¿Qué hay de C++?  
Las uniones y estructuras anónimas NO forman parte del estándar C++ 11, pero la mayoría de los compiladores de C++ las admiten. Dado que esta es una característica exclusiva de C, las implementaciones de C++ no permiten que una estructura/unión anónima tenga miembros privados o protegidos, miembros estáticos y funciones.  

Este artículo es una contribución de Nikita Raj . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *