c++ - Apakah kegunaan kesatuan dalam bahasa C?
世界只因有你
世界只因有你 2017-06-12 09:24:44
0
5
1044

RT, tugasan terakhir struktur ini akan menimpa tugasan sebelumnya, jadi saya ingin tahu tentang senario apakah perkara seperti ini biasanya digunakan?

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

membalas semua(5)
漂亮男人

Jimat memori dan memudahkan akses kepada bait tinggi dan rendah

某草草

Tujuan asalnya adalah untuk menjimatkan ingatan Jika anda fikirkan, bahasa C hanya mula digunakan secara besar-besaran pada tahun 1980-an, dan ingatan sangat berharga pada masa itu.

左手右手慢动作

Boleh menyediakan antara muka akses yang berbeza kepada sekeping data yang sama. . .
Sebagai contoh, semasa anda melakukan kerja terbenam, anda boleh menulis seperti ini:

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

Walau bagaimanapun, ia tidak begitu ringkas untuk menulis dengan cara ini, dan kecekapan kod ini dalam PC adalah sama seperti mengambil terus setiap bait melalui peralihan bit. Beri contoh sahaja, jangan terlalu sibuk dengannya.

女神的闺蜜爱上我

Biasanya digunakan untuk menentukan hujung besar dan kecil

给我你的怀抱

Ia sering digunakan dalam pembangunan terbenam Biar saya berikan contoh di sini, yang serupa dengan @zonxin di atas

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;

Untuk membaca keseluruhan daftar, anda boleh membaca nilai Untuk menulis fail-bit yang berbeza, gunakan reg_des_bit untuk menulis.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan