当前位置:天才代写 > tutorial > C语言/C++ 教程 > C语言基本教程(四)指针、布局、连系和列举(14)

C语言基本教程(四)指针、布局、连系和列举(14)

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:381

二、位布局
位布局是一种非凡的布局,在需按位会见一个字节或字的多个位时,位布局比按位运算符越发利便。
位布局界说的一般形式为:
struct位布局名{
数据范例 变量名: 整型常数;
数据范例 变量名: 整型常数;
} 位布局变量;
个中:数据范例必需是int(unsigned或signed)。整型常数必需长短负的整数,范畴是0~15,暗示二进制位的个数,即暗示有几多位。
变量名是选择项,可以不定名,这样划定是为了分列需要。
譬喻:下面界说了一个位布局。
struct{
unsigned incon: 8; /*incon占用低字节的0~7共8位*/
unsigned txcolor: 4;/*txcolor占用高字节的0~3位共4位*/
unsigned bgcolor: 3;/*bgcolor占用高字节的4~6位共3位*/
unsigned blink: 1; /*blink占用高字节的第7位*/
}ch;
位布局成员的会见与布局成员的会见沟通。
譬喻: 会见上例位布局中的bgcolor成员可写成:
ch.bgcolor

留意:
1.位布局中的成员可以界说为unsigned,也可界说为signed,但当成员长度为1时,会被认为是unsigned范例。因为单个位不行能具有标记。
2.位布局中的成员不能利用数组和指针,但位布局变量可以是数组和指针,假如是指针,其成员会见方法同布局指针。
3.位布局总长度(位数),是各个位成员界说的位数之和,可以高出两个字节。
4.位布局成员可以与其它布局成员一起利用。
譬喻:
struct info{
char name[8];
int age;
struct addr address;
float pay;
unsigned state: 1;
unsigned pay: 1;
}workers;’
上例的布局界说了关于一个工从的信息。个中有两个位布局成员,每个位布局成员只有一位,因此只占一个字节但生存了两个信息,该字节中第一位暗示工人的状态,第二位暗示人为是否已发放。由此可见利用位布局可以节减存贮空间。

 

    关键字:

天才代写-代写联系方式