您的位置:首页 > 其它

struct 位域

2015-11-24 10:12 211 查看
//直接上code吧
位域的作用就是像操作变量一样来操作bit位,常用于嵌入式编程中,来达到较少存储空间使用的目的。
#include <stdio.h>#include <string.h>int main(void){struct bs{unsigned char a: 1;unsigned char b: 3;unsigned char c: 4;unsigned char d: 1;unsigned char e: 2;unsigned char f: 2;}bit, *pbit;printf("sizeof = %d %d\n", sizeof(bit), sizeof(*pbit));bit.a = 1;bit.b = 7;bit.c = 15;printf("%d,%d,%d\n", bit.a, bit.b, bit.c);pbit = &bit;pbit->a = 0;pbit->b &= 3;pbit->c |= 1;printf("%d,%d,%d\n", pbit->a, pbit->b, pbit->c);memset(pbit, 0, sizeof(bit));pbit->a = 1;pbit->b = 0x02;pbit->c = 0x06;pbit->d = 1;pbit->e = 1;pbit->f = 2;printf("0x%04x\n", *(unsigned short int *)pbit);return 0;}<span style="color:#ff0000;"></span>
输出结果:a: 1b: 010c: 0110d: 1e: 01f:  10存储位置大致为 fedcba,排在前面的变量放在低位,不晓得是否跟cpu的大小端是否有关系。内存中存放的值变成 1 00110110 0101也就是0x1365看到这项技术时,想当然的可以用在h264头写入的,里面有好多位操作,看来不行啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: