elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Union vs struct , campo de bit
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Union vs struct , campo de bit  (Leído 945 veces)
bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
Union vs struct , campo de bit
« en: 10 Abril 2015, 22:49 pm »

Buenas a todos !!!


Hoy vengo con otra duda , se el uso basico de las uniones y las estructuras pero me gustaria que me explicaran cual es la ventaja de usar estructura y ventaja de usar uniones

pondre un ejemplo mas abajo para ver si me doy a enteder mejor

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  int main(){
  5.  
  6.   struct stTest{
  7.     char caracter;
  8.     int entero;
  9.  };
  10.  stTest test1;
  11.  test1.caracter= 'a';
  12.  test1.entero   = 1;
  13.  
  14.  cout << test1.caracter << test1.entero <<endl;
  15.  /////Esto simplemente imprime : a1
  16.  union  unTest{
  17.    char caracter;
  18.    int    entero;
  19.  };
  20. unTest test2;
  21.   test2.caracter= 'a';
  22.  test2.entero   = 1;
  23. cout << test2.caracter << test2.entero <<endl;
  24.  /////Esto simplemente imprime : @1
  25.  
  26. }
  27.  
  28.  


Entiendo que en las uniones todos los campos comparte el mismo espacion de memoria
eso es importante pero pero por que se usa mucho .. alguien me puede dar ejemplos de  caso de uso por favot , y aparte alguien me puede explicar eso de los campos de bit.

no soy nuevo pero nunca lo he usado y quisiera comprender para que se usa pero los cursillos , libro que he visto no me dejan entender el por que y para que eso y algunas cosas, Gracias de antemano.


En línea

gracias por responder mis dudas
ivancea96


Desconectado Desconectado

Mensajes: 3.410


ASMático


Ver Perfil WWW
Re: Union vs struct , campo de bit
« Respuesta #1 en: 10 Abril 2015, 23:02 pm »

Código
  1. struct P{
  2.    bool a:1;
  3.    bool b:1;
  4.    bool c:1;
  5.    bool d:1;
  6.    bool e:1;
  7.    bool f:1;
  8.    bool g:1;
  9.    bool h:1;
  10. };

Ahí el tamaño de la estructura es de 1 byte: cada campo tiene solo 1 bit.


Una union es lo que has dicho, y no hay más. Puede ser una forma de ahorrar memoria, o simple comodidad.


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Union vs struct , campo de bit
« Respuesta #2 en: 10 Abril 2015, 23:45 pm »

La union se usa algunas veces para proporcionar métodos alternativos de acceso:

Código
  1. typedef union
  2. {
  3.    struct
  4.    {
  5.        int32_t low;
  6.        int32_t high;
  7.    };
  8.    struct
  9.    {
  10.        int16_t low_16;
  11.        int16_t middleLow_16;
  12.        int16_t middleHigh_16;
  13.        int16_t high_16;
  14.    };
  15.    struct
  16.    {
  17.        int8_t one_8;
  18.        int8_t two_8;
  19.        int8_t three_8;
  20.        int8_t four_8;
  21.        int8_t five_8;
  22.        int8_t six_8;
  23.        int8_t seven_8;
  24.        int8_t eigth_8;
  25.    };
  26.    int64_t dword;
  27. }_register;
  28.  
  29. int main()
  30. {
  31.    _register rax;
  32.    eax.dword = 1000;
  33.    printf("%064X\n", eax.dword);
  34.    printf("%032X\n", eax.high);
  35.    printf("%032X\n", eax.low);
  36.  
  37.    return 0;
  38. }
  39.  
Por ejemplo eso, para acceder a las distintas partes de un registro de 64 bits.
En línea

Regístrate en
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO]¿Como printear un valor de un struct dentro de otro struct?
Programación C/C++
Firos 0 4,126 Último mensaje 24 Marzo 2011, 13:47 pm
por Firos
[Consulta] campo del struct MODULEENTRY32 « 1 2 »
Programación C/C++
dRak0 11 3,799 Último mensaje 9 Agosto 2014, 21:05 pm
por Eternal Idol
Algoritmos quick union y wighted quick union?
Programación General
carlmycol 1 1,051 Último mensaje 11 Septiembre 2014, 18:05 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines