Estructura y Union en C

Source code computer

[et_pb_section fb_built=»1″ _builder_version=»3.22″][et_pb_row _builder_version=»3.25″ background_size=»initial» background_position=»top_left» background_repeat=»repeat»][et_pb_column type=»4_4″ _builder_version=»3.25″ custom_padding=»|||» custom_padding__hover=»|||»][et_pb_text _builder_version=»4.4.6″ background_size=»initial» background_position=»top_left» background_repeat=»repeat» hover_enabled=»0″]

Ya hemos visto por encima lo interesante que puede ser trabajar con estructuras en C, ahora vamos a ver lo que es una UNION en C. Una UNION en base es como una estructura, solo que en una estructura los componentes de la misma se almacenan en diferente región de memoria, y en una UNION los componentes comparten la misma porción de memoria. Por lo tanto en una UNION nunca vamos a poder a acceder a sus componentes a la misma vez, modificar un componente modificará el valor del otro, a veces a valores impredecibles. Mejor verlo en un ejemplo:

[/et_pb_text][et_pb_dmb_code_snippet _builder_version=»4.4.6″ title=»Lenguaje C» code=»I2luY2x1ZGUgPHN0ZGlvLmg+CgovKiB1biBjYW1wbyBkZSBiaXRzIHF1ZSBzZSB2YSBhIGNvZGlmaWNhciAqLwpzdHJ1Y3QgYnl0ZSB7CiAgICAgICAgaW50IGEgOiAxOwogICAgICAgIGludCBiIDogMTsKICAgICAgICBpbnQgYyA6IDE7CiAgICAgICAgaW50IGQgOiAxOwogICAgICAgIGludCBlIDogMTsKICAgICAgICBpbnQgZiA6IDE7CiAgICAgICAgaW50IGcgOiAxOwogICAgICAgIGludCBoIDogMTsKfTsKCnVuaW9uIGJpdHMgewogICAgICAgIGNoYXIgY2FyOyAvLyBVbiBieXRlIGNvbnRpZW5lIDggYml0cwogICAgICAgIHN0cnVjdCBieXRlIGJpdDsgLy8gTG9zIDggYml0cyBxdWUgY29ycmVzcG9uZGVuIGEgbGEgbGV0cmEgcHVsc2FkYQp9IGFzY2lpOwoKdm9pZCBkZWNvZGlmaWNhciAodW5pb24gYml0cyBiKTsKCnZvaWQgbWFpbigpCnsKICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBhc2NpaS5jYXIgPSBnZXRjaGFyKCk7CiAgICAgICAgICAgICAgICBwcmludGYoIjogIik7CiAgICAgICAgICAgICAgICBkZWNvZGlmaWNhcihhc2NpaSk7CiAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgfSB3aGlsZSAoYXNjaWkuY2FyIT0ncycpOyAvKnNhbGltb3Mgc2kgc2UgcHVsc2EgdW5hIHMgKi8KfQoKLyogTXVlc3RyYSBsYSB0cmFtYSBkZSBiaXRzIHBhcmEgY2FkYSBjYXLDoWN0ZXIuICovCnZvaWQgZGVjb2RpZmljYXIodW5pb24gYml0cyBiKQp7CiAgICAgICAgaWYgKGIuYml0LmgpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmcpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmYpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmUpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmQpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmMpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmIpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmEpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7Cn0=» language=»c» linenums=»on» usetabwidth=»on» tabwidth=»4″ hover_enabled=»0″]I2luY2x1ZGUgPHN0ZGlvLmg+CgovKiB1biBjYW1wbyBkZSBiaXRzIHF1ZSBzZSB2YSBhIGNvZGlmaWNhciAqLwpzdHJ1Y3QgYnl0ZSB7CiAgICAgICAgaW50IGEgOiAxOwogICAgICAgIGludCBiIDogMTsKICAgICAgICBpbnQgYyA6IDE7CiAgICAgICAgaW50IGQgOiAxOwogICAgICAgIGludCBlIDogMTsKICAgICAgICBpbnQgZiA6IDE7CiAgICAgICAgaW50IGcgOiAxOwogICAgICAgIGludCBoIDogMTsKfTsKCnVuaW9uIGJpdHMgewogICAgICAgIGNoYXIgY2FyOyAvLyBVbiBieXRlIGNvbnRpZW5lIDggYml0cwogICAgICAgIHN0cnVjdCBieXRlIGJpdDsgLy8gTG9zIDggYml0cyBxdWUgY29ycmVzcG9uZGVuIGEgbGEgbGV0cmEgcHVsc2FkYQp9IGFzY2lpOwoKdm9pZCBkZWNvZGlmaWNhciAodW5pb24gYml0cyBiKTsKCnZvaWQgbWFpbigpCnsKICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBhc2NpaS5jYXIgPSBnZXRjaGFyKCk7CiAgICAgICAgICAgICAgICBwcmludGYoIjogIik7CiAgICAgICAgICAgICAgICBkZWNvZGlmaWNhcihhc2NpaSk7CiAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgfSB3aGlsZSAoYXNjaWkuY2FyIT0ncycpOyAvKnNhbGltb3Mgc2kgc2UgcHVsc2EgdW5hIHMgKi8KfQoKLyogTXVlc3RyYSBsYSB0cmFtYSBkZSBiaXRzIHBhcmEgY2FkYSBjYXLDoWN0ZXIuICovCnZvaWQgZGVjb2RpZmljYXIodW5pb24gYml0cyBiKQp7CiAgICAgICAgaWYgKGIuYml0LmgpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmcpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmYpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmUpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmQpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmMpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmIpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7CiAgICAgICAgaWYgKGIuYml0LmEpIHByaW50ZiAoIjEgIik7CiAgICAgICAgZWxzZSBwcmludGYoIjAgIik7Cn0=[/et_pb_dmb_code_snippet][et_pb_text _builder_version=»4.4.6″ hover_enabled=»0″]Descarga: CÓDIGO FUENTE

Pues bien, compilar el código y cuando lo ejecuteis poner vuestro nombre, y averiguareís como sería en binario jejejeje, el mio es:

0 1 0 0 0 1 0 1 --> E
0 1 1 0 0 1 0 0 --> d
0 1 1 1 0 1 0 1 --> u
0 1 1 0 0 0 0 1 --> a
0 1 1 1 0 0 1 0 --> r
0 1 1 0 0 1 0 0 --> d
0 1 1 0 1 1 1 1 --> o

Un saludo !![/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]

Más para explorar

Antiguas noticias
Código Python

Empezando con python

Hace ya un tiempo que llevo pensando en ponerme con Python, su escalada en Lenguajes más queridos (y más usados) en lo referente a mi