日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

联合体union和大小端(big-endian、little-endian)

發(fā)布時(shí)間:2023/11/27 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 联合体union和大小端(big-endian、little-endian) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


1.聯(lián)合體union的基本特性——struct的同與不同

union,中文名聯(lián)合體、共用體,在某種程度上類似結(jié)構(gòu)體struct的一種數(shù)據(jù)結(jié)構(gòu),共用體(union)和結(jié)構(gòu)體(struct)同樣可以包含很多種數(shù)據(jù)類型和變量。

在成員完全相同的情況下,structunion占用的內(nèi)存要多一些。

原因是Cstructunion的內(nèi)存分配機(jī)制不同:

struct中,所有的成員都有自己的存儲(chǔ)空間,而且為了便于尋址和管理,所有的數(shù)據(jù)成員都要遵循內(nèi)存對(duì)齊的規(guī)則;

union中,所有的成員共用一塊存儲(chǔ)空間,在操作不同的成員時(shí),編譯器依據(jù)不同的成員類型,按照不同的方式取值。

2.聯(lián)合體union所占內(nèi)存空間大小:

#include<stdio.h>
union unionTest{int a;double b;
}
main(){union unionTest test;printf("The sizeof of test is %d\n",sizeof(test));       
}

結(jié)果:

The?sizeof?of?test?is?8

說(shuō)明:聯(lián)合體所分配內(nèi)存空間的大小為聯(lián)合體中所占字節(jié)最大成員的大小。

3.聯(lián)合體union和大小端(big-endianlittle-endian):?

#include<stdio.h>
union var{char c[4];int i;
};
int main(){union var data;data.c[0] = 0x04;//因?yàn)槭莄har類型,數(shù)字不要太大,算算ascii的范圍~data.c[1] = 0x03;//寫成16進(jìn)制為了方便直接打印內(nèi)存中的值對(duì)比data.c[2] = 0x02;data.c[3] = 0x11;//數(shù)組中下標(biāo)低的,地址也低,按地址從低到高,內(nèi)存內(nèi)容依次為:04,03,02,11。總共四字節(jié)!
//而把四個(gè)字節(jié)作為一個(gè)整體(不分類型,直接打印十六進(jìn)制),應(yīng)該從內(nèi)存高地址到低地址看,0x11020304,低位04放在低地址上。printf("%x\n",data.i); }

結(jié)果:

11020304

說(shuō)明我的32位win7系統(tǒng)為小端方式。

?

轉(zhuǎn)載于:https://www.cnblogs.com/muhuacat/p/8268974.html

總結(jié)

以上是生活随笔為你收集整理的联合体union和大小端(big-endian、little-endian)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。