1.应用:
一般用于单片机或是是芯片操作,减少其内存的使用。
2.上代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct{char GPIO1:2;char GPIO2:2;char GPIO3:2;char GPIO4:2;
}GPIO;
int main()
{GPIO test;test.GPIO1 = 1;test.GPIO2 = 0;test.GPIO3 = 0;test.GPIO4 = 1;printf("整个结构体的字节: %d\n",sizeof(test));printf("test.GPIO1 :%d\n",test.GPIO1);printf("test.GPIO2 :%d\n",test.GPIO2);printf("test.GPIO3 :%d\n",test.GPIO3);printf("test.GPIO4 :%d\n",test.GPIO4);printf("test.GPIO1 :%d\n",&test);
}
3.运行结果:
4.分析:
(1)该结构体使用了1个字节的内存;如果不使用位域的话,该 结构体应该是使用了4个字节的内存。所以位域可以减少结构体的内存使用,在你变量存储的数据不是很大的情况下。
(2)要注意的是,其不能取到每个变量的地址,因为地址不对其。取地址的单位至少是一个字节的,所以在该例子中,只能取到该结构体的地址
更多推荐
发布评论