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

哪位高手可以高数小弟我这个如何用啊最好详细点啊 举个例子什么的··

2012-09-09 
谁可以高数我这个怎么用啊?最好详细点啊 举个例子什么的C/C++ codeunion h{uint8 RxBuf[29]struct RFRXBU

谁可以高数我这个怎么用啊?最好详细点啊 举个例子什么的··

C/C++ code
union h{  uint8 RxBuf[29];  struct RFRXBUF  {        uint8 HeadCom[3]; //命令头        uint8 Laddr[8];        uint8 Saddr[2];        uint8 DataBuf[16];  //数据缓冲区  }RXDATA;}RfRx;//无线接收缓冲区



[解决办法]
union是联合, 即RxBuf 和 RFRXBUF共享一片内存区,对RxBuf的操作会影响RFRXBUF,相反也是一样的。
union的作用在于,对这片内存区更加好的解释,别人看了就知道,前3个uint8的长度存放的是命令头等等。
而且也方便对整个RFRXBUF进行操作,即对RxBuf进行操作就可以了
[解决办法]
union是联合体, 即RxBuf 和 RFRXBUF共享一片内存区,同一时刻只能对union下的一个进行赋值,

这个联合体下面是一个数组 和 一个结构体 共享内存。,使用的时候 只需对其中一个赋值使用就可以,

就是 不能同时使用 数组和结构体,,只能使用一个,

 共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。

1、union中可以定义多个成员,union的大小由最大的成员的大小决定。
2、union成员共享同一块大小的内存,一次只能使用其中的一个成员。
3、对某一个成员赋值,会覆盖其他成员的值(也不奇怪,因为他们共享一块内存。但前提是成员所占字节数相同,当成员所占字节数不同时只会覆盖相应字节上的值,比如对char成员赋值就不会把整个int成员覆盖掉,因为char只占一个字节,而int占四个字节)

4、联合体union的存放顺序是所有成员都从低地址开始存放的。
下面看一个简单的代码:
C/C++ code
#include <stdio.h> typedef union{ char c; int a; int b;}Demo; int main(int argc, char **argv){ Demo d; d.c = 'H'; d.a = 10; d.b = 12;  printf("size: %d\n", sizeof(d)); printf("%c\t%d\t%d\n", d.c, d.a, d.b);  return 0;} 

热点排行