Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Struct y Union Anónimos | Uso Avanzado de Structs
Structs en C
Sección 4. Capítulo 3
single

single

Struct y Union Anónimos

Desliza para mostrar el menú

El lenguaje de programación C incluye estructuras anónimas y uniones anónimas, que permiten definir estructuras y uniones sin especificar un nombre.

¿Qué son las estructuras y uniones anónimas?

Una unión anónima o estructura anónima no tiene un identificador. Por esta razón, no es posible crear variables independientes de ese tipo; en su lugar, suelen utilizarse dentro de otras estructuras.

// Anonymous union
union {
    char x;
    int y;
};

// Anonymous structure
struct {
    char x;
    int y;
};

Las estructuras y uniones anónimas son especialmente útiles cuando están anidadas y solo se utilizarán en el contexto donde se declaran.

Ejemplo práctico

Considera un escenario en el que deseas representar una tabla ASCII donde el mismo valor puede interpretarse como un código numérico o como un símbolo de carácter. Utilizar una unión anónima dentro de una estructura permite alternar entre estas dos interpretaciones de manera eficiente.

main.c

main.c

123456789101112131415161718192021
#include <stdio.h> struct ASCIItable { // Anonymous union allows dual representation of the same memory union { char symbol; int num; }; }; int main() { struct ASCIItable AZtable; AZtable.num = 65; // ASCII code for 'A' // Print all uppercase letters and their numeric codes for (int i = 0; i < 26; i++) { printf("num = %d | symbol = `%c`\n", AZtable.num + i, AZtable.symbol + i); } return 0; }

En este ejemplo, la estructura ASCIItable contiene una unión anónima. La unión permite que la misma memoria se interprete tanto como un valor numérico (num) como un carácter (symbol).

Cuando AZtable.num se establece en 65, corresponde al código ASCII de 'A'. Usando la misma memoria, AZtable.symbol también representa 'A'. Al iterar 26 veces, se pueden imprimir todas las letras mayúsculas junto con sus códigos ASCII, demostrando cómo la misma memoria puede representar múltiples vistas de los datos.

Tarea

Desliza para comenzar a programar

Crear una función findFurthestPoint que determine el punto más alejado del origen (0,0) en un plano 2D. Cada punto está representado por una estructura Point que contiene una estructura anónima anidada con los campos x y y.

La función debe calcular la distancia euclidiana para cada punto utilizando la fórmula:

distance = sqrt(x*x + y*y)

y devolver el índice del punto con la distancia máxima.

  1. Dentro de la función, calcular la distancia del primer punto al origen usando la fórmula.
  2. Inicializar maxIndex en 0.
  3. Utilizar un bucle for desde i = 1 hasta i = n para recorrer los puntos.
  4. Para cada punto, calcular su distancia usando la fórmula anterior.
  5. Si la distancia es mayor que maxDistance, actualizar maxDistance y maxIndex con la distancia y el índice del punto actual.
  6. Al finalizar el bucle, devolver maxIndex como el índice del punto más alejado.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

some-alt