读书人

这个数据结构怎么理解

发布时间: 2013-10-29 12:07:57 作者: rapoo

这个数据结构如何理解?
typedef union _ATCR_TypeDef
{
uint16_t d16;
struct
{
uint16_t TRC: 5;
uint16_t MODE: 1;
uint16_t FRE: 2;
uint16_t SAT: 6;
uint16_t SYS: 2;
}
b;
}ATCR_TypeDef;

“:”后面的数字代表什么 struct 数据结构
[解决办法]

引用:
能不能详细解释一下,这个共用体到底占用几个字节?结构体中的各项到底怎么分配数据位


struct
{
uint16_t TRC: 5; //占5个二进制位
uint16_t MODE: 1; //占1个二进制位
uint16_t FRE: 2; //占2个二进制位
//上面占满8位,就是一个字节的内存空间了
//下面也是8位 也占了一个字节的内存空间
uint16_t SAT: 6; // 占6个二进制位
uint16_t SYS: 2; // 占2个二进制位
}

[解决办法]
这是位域呀,给个例子,你就明白了,还是原来楼上那位大神教我的

struct bs

{

int a:8; //这里标识int 4个字节,32位 只占8位而已

int b:2; // 这里 表示值占 2位,

int c:6; //6位
//只要后面没有用完 32位的话, 整个结构体大小就只是4个字节大小而已!
//全部换成char的话, char 8个字节, 结构体旧只占2个字节~

};



[解决办法]
位域在语法书中是有讲的,但其实现严重依赖具体的平台,所以讲得很粗略

读书人网 >C语言

热点推荐