c++ - A quoi sert l'union en langage C?
世界只因有你
世界只因有你 2017-06-12 09:24:44
0
5
1024

RT, la dernière affectation de cette structure écrasera l'affectation précédente, donc je suis curieux de savoir dans quels scénarios ce genre de chose est généralement utilisé ?

世界只因有你
世界只因有你

répondre à tous(5)
漂亮男人

Économisez la mémoire et facilitez l'accès aux octets hauts et bas

某草草

Le but initial était d'économiser de la mémoire. Si vous y réfléchissez bien, le langage C n'a commencé à être utilisé à grande échelle que dans les années 1980, et la mémoire était très précieuse à cette époque.

左手右手慢动作

Peut fournir différentes interfaces d'accès à la même donnée. . .
Par exemple, lorsque vous faisiez du travail embarqué, vous pourriez écrire comme ceci :

// 没有字节对齐,或者字节对齐为1,int 占4字节
typedef union {
    unsigined int num;
    struct {
        unsigned char byte0;
        unsigned char byte1;
        unsigned char byte2;
        unsigned char byte3;
    } bytes;
} Demo;

Cependant, il n'est pas très concis d'écrire de cette façon, et l'efficacité de ce code sur PC est la même que la récupération directe de chaque octet par décalage de bits. Juste un exemple, ne vous y attardez pas trop.

女神的闺蜜爱上我

Généralement utilisé pour déterminer les grandes et petites extrémités

给我你的怀抱

Il est souvent utilisé dans le développement embarqué. Permettez-moi de donner ici un exemple similaire à celui de @zonxin ci-dessus

.
typedef struct __regular_descriptor_4_high {
    union {
        U32 value;
        struct {
            U32 raid_id0    : 4;
            U32 raid_cmd0   : 4;
            U32 raid_id1    : 4;
            U32 raid_cmd1   : 4;
            U32 raid_id2    : 4;
            U32 raid_cmd2   : 4;
            U32 raid_id3    : 4;
            U32 raid_cmd3   : 4;
        } reg_des_bit;   
    } u; 
} reg_des_4_high;

Pour lire l'intégralité du registre, vous pouvez lire la valeur. Pour écrire différents fichiers de bits, utilisez reg_des_bit pour écrire.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal