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.
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; }
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