C位域-减少变量使用空间

1.应用:

一般用于单片机或是是芯片操作,减少其内存的使用。

2.上代码:

#include 
#include 
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.运行结果:

C位域-减少变量使用空间_第1张图片 

4.分析:

(1)该结构体使用了1个字节的内存;如果不使用位域的话,该 结构体应该是使用了4个字节的内存。所以位域可以减少结构体的内存使用,在你变量存储的数据不是很大的情况下。

(2)要注意的是,其不能取到每个变量的地址,因为地址不对其。取地址的单位至少是一个字节的,所以在该例子中,只能取到该结构体的地址 

 

你可能感兴趣的:(c语言)