青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

程序讓生活更美好

半畝方塘 天光云影

  C++博客 ::  :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
  55 隨筆 :: 4 文章 :: 202 評論 :: 0 Trackbacks

struct union 的區(qū)別

在編程的時(shí)候,經(jīng)常會遇到使用一個(gè)變量處理多種數(shù)據(jù)的情況,在這種情況下,如果我們不考慮使用類,那么就可以是struct(結(jié)構(gòu))和union(聯(lián)合)來進(jìn)行處理。那么,這兩種結(jié)構(gòu)之間到底有什么不同呢?

可以先看下面的一個(gè)小例子。

 1 #include  < iostream >
 2 using   namespace  std;
 3
 4 union U1 {
 5      char  c;
 6      int  i;
 7      double  d;
 8     }
;
 9 union U2 {
10      char  c;
11      // int i;
12      // double d;
13     }
;
14
15 union U3 {
16      char  c;
17      int  i;
18      // double d;
19     }
;
20
21 struct  S1 {
22      char  c;
23      int  i;
24      double  d;
25     }
;
26
27 struct  S2 {
28      char  c;
29      int  i;
30      // double d;
31     }
;
32
33 int  main() {
34     cout << " U1's size = " << sizeof (U1) << endl;
35     cout << " U2's size = " << sizeof (U2) << endl;
36     cout << " U3's size = " << sizeof (U3) << endl;
37     cout << endl;
38     cout << " -------------------------------- " << endl;
39     cout << " S1's size = " << sizeof (S1) << endl;
40     cout << " 其中 " << sizeof ( char ) << " + " << sizeof ( int ) << " + " << sizeof ( double ) << " = " << sizeof ( char ) + sizeof ( int ) + sizeof ( double ) << endl;
41     cout << " ---------- " << endl;
42     cout << " S2's size = " << sizeof (S2) << endl;
43     cout << " 其中 " << sizeof ( char ) << " + " << sizeof ( int ) << " = " << sizeof ( char ) + sizeof ( int ) << endl;
44     cout << " -------------------------------- " << endl;
45     S1 s;
46     s.c = ' A ' ;
47         cout << " 1 s.c =  " << s.c << endl;
48     s.d = 23.2132 ;
49         cout << " 1 s.d =  " << s.d << endl;
50
51         cout << " 2 s.c =  " << s.c << endl;
52         cout << " 2 s.d =  " << s.d << endl;
53         cout << " -----------------------  " << endl;
54     U1 u;
55         u.c = ' A ' ;
56         cout << " 1 u.c =  " << u.c << endl;
57     
58         u.i = 23322 ;
59         cout << " 1 u.i =  " << u.i << endl;
60
61         u.d = 23.2132 ;
62         cout << " 1 u.d =  " << u.d << endl;
63         cout << " 2 u.c =  " << u.c << endl;
64         cout << " 2 u.i =  " << u.i << endl;
65      return   0 ;
66 }

67

輸出結(jié)果為:

U1's size =8

U2's size =1

U3's size =4

 

--------------------------------

S1's size =16

其中 1+4+8=13

----------

S2's size =8

其中 1+4=5

--------------------------------

1 s.c = A

1 s.d = 23.2132

2 s.c = A

2 s.d = 23.2132

-----------------------

1 u.c = A

1 u.i = 23322

1 u.d = 23.2132

2 u.c =

2 u.i = 1181975000

解釋:

struct 類型的內(nèi)存分配是結(jié)合內(nèi)部的所有變量大小和相關(guān)的,但不是簡單的相加,從上面的例子就可以看出來, struct 類型的分配的內(nèi)存大小是應(yīng)該內(nèi)部最大數(shù)據(jù)類型的整數(shù)倍,不足一倍的部分會自動(dòng)補(bǔ)全成一倍大小,應(yīng)該是編譯器為了數(shù)據(jù)整齊,處理速度會快些把。 union 類型的內(nèi)存分配,只是和聯(lián)合體內(nèi)的最大的一個(gè)數(shù)據(jù)類型的大小相關(guān),而且 union 內(nèi)的所有數(shù)據(jù)都在一個(gè)單獨(dú)的內(nèi)存空間里面。這些就是上面程序出現(xiàn)這樣的結(jié)果的原因。


   所以,
u.c 的值是 A ,當(dāng)給聯(lián)合體內(nèi)的其他變量賦值之后, u.c 的值就是一個(gè)無用的信息。同樣, u.i 的值最初是 23322 ,當(dāng)給 u.d 賦值 23.2132 之后, u.i 的值就變得無用了。


posted on 2006-03-20 17:02 北風(fēng)之神007 閱讀(10017) 評論(5)  編輯 收藏 引用 所屬分類: c/c++

評論

# re: struct 與union的區(qū)別 2007-09-07 10:47 路人甲
謝謝~~ 學(xué)到了不少

不過感覺struct類型的分配的內(nèi)存大小應(yīng)該是,大于等于內(nèi)部所有變量大小的和的一個(gè)2的密指數(shù)。
  回復(fù)  更多評論
  

# re: struct 與union的區(qū)別 2008-01-26 11:42 路人已
真的很感謝,終于知道了union的優(yōu)點(diǎn)了*^_^*  回復(fù)  更多評論
  

# re: struct 與union的區(qū)別 [未登錄] 2008-11-04 15:23 tom
memory alignment@路人甲
  回復(fù)  更多評論
  

# re: struct 與union的區(qū)別 2010-09-21 09:08 愛的隧道
@路人甲
應(yīng)該是不小于所有變量的和且最接近之的4的倍數(shù)。  回復(fù)  更多評論
  

# re: struct 與union的區(qū)別 [未登錄] 2011-09-23 15:02 aaaa
最后為什么2 u.i = 1181975000?  回復(fù)  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区www| 麻豆免费精品视频| 亚洲综合色激情五月| 午夜精品久久久久99热蜜桃导演| 国产精品免费久久久久久| 欧美一区二区成人| 亚洲免费观看| 久久免费视频网| 在线视频中文亚洲| 在线观看的日韩av| 久久精品国产精品亚洲精品| 亚洲乱码精品一二三四区日韩在线| 欧美一区高清| 激情丁香综合| 久久久久久夜精品精品免费| 免费在线成人av| 亚洲欧美清纯在线制服| 狠狠色狠狠色综合系列| 欧美视频在线视频| 欧美噜噜久久久xxx| 久久欧美肥婆一二区| 午夜精品久久久久久久久久久久 | 亚洲国产精品第一区二区| 亚洲视频一区二区| 91久久精品一区二区三区| 国产视频精品va久久久久久| 国产精品多人| 国产精品久久久久久久久久久久久| 蜜桃av综合| 欧美日韩精品免费观看视一区二区 | 欧美freesex8一10精品| 欧美一区二区三区在线播放| 久久久久久97三级| 日韩视频在线播放| 午夜精品www| 欧美在线日韩在线| 久久不射中文字幕| 欧美在线|欧美| 欧美一区二区三区免费视| 午夜精品理论片| 亚洲欧美影院| 欧美不卡在线视频| 一级日韩一区在线观看| 亚洲视频www| 午夜在线一区| 久久久天天操| 性久久久久久久久久久久| 欧美久久99| 国产精品成人av性教育| 国产精品久久久久国产精品日日 | 99视频一区二区三区| 牛人盗摄一区二区三区视频| 国产一区观看| 欧美一区二区三区啪啪| 一卡二卡3卡四卡高清精品视频| 欧美激情aⅴ一区二区三区 | 欧美在线观看视频在线| 亚洲视频每日更新| 欧美亚男人的天堂| 中文av一区二区| 99riav国产精品| 亚洲片在线观看| 亚洲狠狠丁香婷婷综合久久久| 亚洲欧美一区二区原创| 国产美女精品视频| 久久久久国内| 久久免费国产精品1| 在线成人性视频| 久久久夜夜夜| 久久天堂成人| 亚洲免费av观看| 一区二区日韩| 国产日韩欧美一区二区三区四区| 欧美影院在线| 久久亚洲精品一区| 日韩午夜激情| 亚洲网在线观看| 久久夜色精品亚洲噜噜国产mv| 在线综合亚洲欧美在线视频| 国产精品久久久久久亚洲毛片| 小黄鸭精品aⅴ导航网站入口| 欧美一区成人| 日韩视频永久免费观看| 99热这里只有精品8| 国产婷婷色一区二区三区在线 | 亚洲三级免费观看| 欧美私人啪啪vps| 午夜精品免费| 久久永久免费| 亚洲一区二区影院| 欧美专区日韩专区| 亚洲靠逼com| 亚洲欧美日韩国产综合| 一区二区在线视频播放| 亚洲黄一区二区三区| 国产伦精品一区| 亚洲成人在线视频播放 | 国产精品国产三级国产普通话99| 性欧美大战久久久久久久免费观看| 欧美一级视频| 日韩小视频在线观看| 午夜天堂精品久久久久| 伊人久久成人| 亚洲综合精品一区二区| 最新国产精品拍自在线播放| 亚洲午夜影视影院在线观看| 国产一区欧美日韩| 亚洲精品国久久99热| 国产一区观看| 亚洲视频在线观看三级| 亚洲激情av| 欧美中文字幕在线观看| 亚洲午夜一区| 欧美激情一区在线观看| 久热精品在线视频| 国产精品专区h在线观看| 亚洲国产影院| 亚洲大黄网站| 欧美一区二区三区在线免费观看| 亚洲视频999| 国产一区二区av| 欧美成人在线免费观看| 国产精品自在欧美一区| 亚洲第一福利在线观看| 国产亚洲欧美激情| 亚洲综合国产| 亚洲综合国产激情另类一区| 欧美va日韩va| 欧美电影资源| 亚洲国产精品视频| 久久蜜臀精品av| 久久精品视频导航| 国产精品视频你懂的| 亚洲桃花岛网站| 在线视频精品一区| 欧美另类在线观看| 国产欧美精品一区aⅴ影院| 欧美国产日韩a欧美在线观看| 国产亚洲福利一区| 国产精品99久久不卡二区| 一区二区日韩精品| 欧美日韩国产一区| 亚洲片在线资源| 亚洲人精品午夜在线观看| 麻豆av一区二区三区久久| 欧美福利视频一区| 亚洲国产免费| 欧美+日本+国产+在线a∨观看| 另类激情亚洲| 91久久精品国产91性色| 免费亚洲婷婷| 日韩一级黄色片| 亚洲欧美成人综合| 国产欧美精品一区二区色综合| 性色一区二区三区| 免费日韩av电影| 日韩系列欧美系列| 欧美色欧美亚洲高清在线视频| 夜久久久久久| 久久久国产亚洲精品| 激情综合视频| 欧美激情国产日韩| 亚洲午夜影视影院在线观看| 欧美一区二区视频在线观看2020| 国语自产偷拍精品视频偷| 美女视频黄 久久| 日韩亚洲一区二区| 亚洲综合成人在线| 久久综合久色欧美综合狠狠| 91久久夜色精品国产九色| 中国成人亚色综合网站| 国产日韩精品一区二区三区| 久久久久久高潮国产精品视| 亚洲日本欧美天堂| 久久se精品一区精品二区| 尤物网精品视频| 欧美人交a欧美精品| 午夜精品视频| 亚洲日韩中文字幕在线播放| 久久成人一区二区| 日韩午夜激情| 激情丁香综合| 欧美亚日韩国产aⅴ精品中极品| 久久成人羞羞网站| 91久久亚洲| 欧美岛国激情| 久久全国免费视频| 午夜精品久久久久| 一区二区高清视频| 久久精品免费播放| 亚洲午夜久久久久久尤物| 国产精品黄视频| 欧美高清视频一区| 欧美一区二区精美| 在线一区二区三区四区| 亚洲国产成人高清精品| 国产欧美日韩精品丝袜高跟鞋| 欧美日韩视频| 午夜在线电影亚洲一区| 亚洲一区二区免费|