題目:
struct定義中在成員后面加冒號(hào)“:typedef unsigned char u_char;struct frame_control {u_char fc_subtype :4;u_char fc_type :2;u_char fc_protocol_version :2;u_char fc_order :1;u_char fc_wep :1;u_char fc_more_data :1;u_char fc_pwr_mgt :1;u_char fc_retry :1;u_char fc_more_frag :1;u_char fc_from_ds :1;u_char fc_to_ds :1;};里面成員定義中加:
解答:
這是位域操作的表示方法,也就是說(shuō)后面加上“:1”的意思是這個(gè)成員的大小占所定義類(lèi)型的1 bit,“:2”占2 bit,依次類(lèi)推.當(dāng)然大小不能超過(guò)所定義類(lèi)型包含的總bit數(shù).一個(gè)bytes(字節(jié))是8 bit(bit).例如你的結(jié)構(gòu)中定義的類(lèi)型是u_char,一個(gè)字節(jié),共8bit,最大就不能超過(guò)8.32位機(jī)下,short是2字節(jié),共16bit,最大就不能超過(guò)16.int是4字節(jié),共32bit,最大就不能超過(guò)32.依次類(lèi)推.這樣定義比較省空間.例如你上面的結(jié)構(gòu),定義的變量類(lèi)型是u_char,是一字節(jié)類(lèi)型,即8bit.fc_subtype占了4bit,fc_type占2bit,fc_protocol_version占2bit,共8bit,正好是一個(gè)字節(jié).其他八個(gè)成員,各占1bit,共8bit,正好也是一個(gè)字節(jié).因此你的結(jié)構(gòu)的大小如果用sizeof(struct frame_control)計(jì)算,就是2bytes.
1.《struct struct定義中在成員后面加冒號(hào)“:》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《struct struct定義中在成員后面加冒號(hào)“:》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/jiaoyu/539938.html