C語言結構體中的冒號的作用

2020-08-10 16:07:44

結構體中的冒號表示位域。
位域出現的原因是由於某些資訊的儲存表示只需要幾個bit位就可以表示而不需要一個完整的位元組,同時也是爲了節省儲存空間和方便處理。

struct  bit_struct
{
    int  bit1:3;
    int  bit2:5;
    int  bit3:7;
}data;

說明:

1、位域必須儲存在同一個型別中,不能跨型別,同時也說明位域的長度不會超過所定義型別的長度。如果一個定義型別單元裡所剩空間無法存放下一個域,則下一個域應該從下一單元開始存放。例如:所定義的型別是int型別,一共32爲,目前用掉了25位還剩下7位,這時要儲存一個8位元的位域元素,那麼這個元素就只能從下一個int型別的單元開始而不會在前面一個int型別中佔7爲後面的int型別中佔1位。

2、如果位域的位域長度爲0表示是個空域,同時下一個域應當從下一個位元組單元開始存放。

3、使用無名的位域來作爲填充和調整位置,切記該位域是不能被使用的。

4、位域的本質上就是一種結構體型別,不同的是其成員是按二進制位來分配的。