首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

踏进结构体存储-位域

2013-03-19 
走进结构体存储--位域1、位域简介在嵌入式编程中,经常会遇到下面的结构: & d a t a 为d a t a 位域结构的起

走进结构体存储--位域
1、位域简介       在嵌入式编程中,经常会遇到下面的结构:


 & d a t a 为d a t a 位域结构的起始地址,将其强制转换为i n t 型指针,并赋值给p ,所以p 的
值就是d a t a 位域的起始地址,即4 2 3 3 6 2 4 ,p 指针指向的就是以4 2 3 3 6 2 4 为起始地址的连续
4 个字节的内存单元;接下来执行“c h a r   * p 1 = ( c h a r * ) ( p + 1 ) ; ”使p 1 的值为4 2 3 3 6 2 8 ,p 1 就指
向地址为4 2 3 3 6 2 8 的内存单元;执行“p 2   =   p 1 + 1 ; ”使p 2 的值为4 2 3 3 6 2 9 ,c h a r 型指针指向
地址为4 2 3 3 6 2 9 的内存单元。我们发现,* p 的值和位域a 的值相同。由此可以看出,V C + +  
6 . 0 在编译的时候,对于那些没有使用的位域段,编译器对其进行填充0 的处理。看看位域c
的运行结果,我们发现输出与输入不相符,这是因为在编译的过程中对c h a r 型位域默认执行
有符号处理,所以输出值为- 1 ,而对位域b 指定了无符号的处理方式,所以输出与输入完
全一致。
       

热点排行