首先是struct,在C++中,結構體其實和class有很大的相似了。但是有一點不同的是,struct默認是public,而class中是private.
當然,struct繼承等用法也是可以的。
共用體的聲明方式是:
枚舉的聲明方式與共用體比較相似
其中a初始化為0,後面默認增1,若已經初始化,則後面再增1,比如d=6在這裡。
struct長度計算
大家猜一下,s1 x;int b=sizeof(x);
他的結果會是多少呢?有人會覺得應該是1+8+4+1=14.
實際上是24.為什麼會是這樣呢?這個和結構體的對齊方式有很大關系。總之有兩條
那麼聯合體應該是怎麼樣的呢?
很顯然聯合體取值的時候只能取其中的一個,那麼,聯合體就是多個成員公用一個內存空間。大家很自然的就想到了,最大那個成員所占用的空間就是聯合體的空間了。
講到了數據的對齊方式,那我們就非常有必要講一下兩種不同機器的存儲方式:大端存儲模式和小端存儲模式。
大端存儲模式:高位字節存儲低地位內存中,低位字節存儲高位。這裡均以0x12345678為例。
小端存儲模式:低位存儲在高位內存中
在小端系統中,b的ASCII為多少?
union enumName { int i; unsigned char ch[2]; }; int _tmain(int argc, _TCHAR* argv[]) { enumName student; student.i=0x1420; char b=student.ch[0]; }
答案應該是32
小端是低位放低位,高位放高位。則是20 14這樣排放。ch[0]等於0x20.
其實我們平常使用的計算機很多都是小端存儲。
出處:http://www.cnblogs.com/xiaoyi115/p/3622135.html