久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 結構體

結構體(ti) 時間(jian):2018-04-16      來源:未(wei)知

結構體的概念

結構(gou)(gou)體(ti)屬于(yu)C數(shu)(shu)據類(lei)型(xing)中的(de)構(gou)(gou)造數(shu)(shu)據類(lei)型(xing)(Composite Data Types),在結構(gou)(gou)體(ti)中可以包(bao)含若干個(ge)不同(tong)數(shu)(shu)據類(lei)型(xing)和(he)不同(tong)意義的(de)數(shu)(shu)據項(xiang),從而使這(zhe)些(xie)數(shu)(shu)據項(xiang)組(zu)合(he)起來反映某一個(ge)信息,這(zhe)些(xie)數(shu)(shu)據項(xiang)稱為(wei)結構(gou)(gou)體(ti)的(de)成員(member)。

舉個例子:

上(shang)圖是(shi)模(mo)擬了(le)一(yi)個(ge)(ge)圖書(shu)管(guan)理(li)中的(de)部(bu)分(fen)數(shu)據(ju)(ju),可以(yi)很清楚(chu)的(de)看到一(yi)本書(shu)有編號、書(shu)名、作者(zhe)等許多信(xin)息。如果我想通過一(yi)個(ge)(ge)普通的(de)數(shu)據(ju)(ju)類(lei)(lei)型來完整的(de)描(miao)述這(zhe)本書(shu)肯定是(shi)不(bu)現實的(de),而結構體類(lei)(lei)型是(shi)集合(he)了(le)多種(zhong)不(bu)同(tong)的(de)數(shu)據(ju)(ju)類(lei)(lei)型,可以(yi)更加完全且方便的(de)描(miao)述一(yi)本書(shu),此時結構體的(de)每(mei)一(yi)個(ge)(ge)成員分(fen)別代(dai)表著(zhu)書(shu)的(de)不(bu)同(tong)的(de)信(xin)息。

結構體(ti)的聲明(ming)及結構體(ti)變量的定義(yi)

標準形式:

這里struct為結構(gou)體(ti)關鍵字,一般情況下,結構(gou)體(ti)名(ming)(ming)、成員列表(biao)和結構(gou)體(ti)變量名(ming)(ming)列表(biao)這三部分至少要出現2個(ge),以示例解釋:

1.

2.

3.

4.完全形式

5.也可(ke)以通過typedef將結構體重新(xin)定(ding)義(yi)

結構體(ti)變量的使(shi)用方(fang)法(fa)

結構體變量(liang)在(zai)使用的(de)過程中應該注意以下幾點:

1. 不能將一(yi)(yi)個(ge)結構(gou)體類型變量(liang)作為一(yi)(yi)個(ge)整體加以引用(yong),而只能對(dui)結構(gou)體類型變量(liang)中的各(ge)個(ge)成員(yuan)分別引用(yong)。

2. 使用(yong)成(cheng)員運算符(fu)”.”修改和引(yin)用(yong)成(cheng)員。

3. 相同結構體類型的變量可(ke)以相互(hu)賦值。

輸出結果:

結構(gou)體數組的使(shi)用(yong)方法(fa)

結(jie)構體數組的(de)使(shi)用(yong)方法就是(shi)普通類型數組的(de)使(shi)用(yong)方式與結(jie)構體變量的(de)使(shi)用(yong)方式相結(jie)合,沒有難度,直接上代碼:

輸出結果:

結構體指針(zhen)的(de)使用方法

結(jie)(jie)構(gou)體(ti)指(zhi)針也可(ke)以直接(jie)引(yin)用(yong)結(jie)(jie)構(gou)體(ti)內的成員,但(dan)是(shi)格(ge)式與變量引(yin)用(yong)不同,不用(yong)”.”而是(shi)用(yong)”->”引(yin)用(yong)。

輸出結果:

結構體內的偏(pian)移規則

1.每(mei)個成員(yuan)的偏(pian)移量都必須是當前成員(yuan)所占內存大小(xiao)的整(zheng)數倍如果(guo)不是編譯器會(hui)在成員(yuan)之間(jian)加上填充字節。

2.當所(suo)有(you)成員大小(xiao)計算完(wan)畢后(hou),編譯器判斷當前結構體大小(xiao)是否(fou)是結構體中最寬(kuan)的(de)成員變(bian)量大小(xiao)的(de)整數(shu)倍,如果(guo)不是會在最后(hou)一個(ge)成員后(hou)做字節填充。

結構體(ti)的大小計(ji)算

結構(gou)體中有一(yi)個(ge)(ge)long類型(xing)(xing),兩(liang)個(ge)(ge)char類型(xing)(xing),兩(liang)個(ge)(ge)int類型(xing)(xing)成員,一(yi)個(ge)(ge)short類型(xing)(xing)成員,如果只(zhi)按照(zhao)這幾個(ge)(ge)成員大小相加,結構(gou)體大小應該(gai)是 4*3+1*2+2=16 個(ge)(ge)字(zi)節大小。但(dan)實際輸出結果是20個(ge)(ge)字(zi)節大小。

下面來一步(bu)步(bu)分(fen)析(xi)編(bian)譯器是如(ru)何計算(suan)大(da)小(xiao)進(jin)行分(fen)配的。

1、遇到第一(yi)個成員變量a,該成員偏(pian)移量為(wei)0,大小為(wei)4,符合偏(pian)移規則第一(yi)條。

2、接(jie)下來第(di)二(er)個成員變(bian)量b,偏(pian)移量為4,大小(xiao)為1,符合(he)偏(pian)移規則第(di)一條(tiao)。

3、成(cheng)員變量(liang)(liang)c,偏(pian)(pian)(pian)移(yi)量(liang)(liang)為(wei)5,大小為(wei)4,不符合(he)偏(pian)(pian)(pian)移(yi)規則第(di)一條。在成(cheng)員b和c之間(jian)填充三(san)個字(zi)節,此時,偏(pian)(pian)(pian)移(yi)量(liang)(liang)大小為(wei)8,符合(he)偏(pian)(pian)(pian)移(yi)規則第(di)一條,繼續往下(xia)。

4、成員變量d,偏移(yi)量為(wei)12,大(da)小為(wei)4,符合偏移(yi)規則第一條,繼續往(wang)下(xia)。

 5、成員變量(liang)e,偏移量(liang)為(wei)16,大小為(wei)1,符合偏移規則第一條。

6、成員變量(liang)f,偏移量(liang)為(wei)17,大(da)小(xiao)為(wei)2,不(bu)符合偏移規(gui)則第(di)一條(tiao),在成員e和(he)f之間(jian)填充1個字(zi)節,此時,偏移量(liang)大(da)小(xiao)為(wei)18,最(zui)終大(da)小(xiao)20個字(zi)節

上一篇:蜂鳴器驅動電路

下一篇:單片機復位電路

熱點(dian)文章推薦
華清學員就業榜單
高薪(xin)學員經驗分享
熱點新聞推薦
前(qian)臺專線:010-82525158 企(qi)業培訓洽談專線:010-82525379 院校合(he)作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部