请问 C语言里的 结构体中定义变量 后面的:是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问 C语言里的 结构体中定义变量 后面的:是啥意思相关的知识,希望对你有一定的参考价值。
如题:谢谢大神!
typedef struct
ble_gap_conn_sec_mode_t read_perm;
ble_gap_conn_sec_mode_t write_perm;
uint8_t vlen :1;
uint8_t vloc :2;
BLE_GATTS_VLOCS.*/
uint8_t rd_auth :1;
uint8_t wr_auth :1;
ble_gatts_attr_md_t;
在结构体定义时,如果一个变量,需要的数值范围,比最小的char 还要小, 那么为了节省空间,可以使用这样的位域定义
比如你这里的
uint8_t vloc :2;
就是表示成员vloc 只占两位(2 bits)
typedef structble_gap_conn_sec_mode_t read_perm;
ble_gap_conn_sec_mode_t write_perm;
uint8_t vlen :1;
uint8_t vloc :2;
uint8_t rd_auth :1;
uint8_t wr_auth :1;
ble_gatts_attr_md_t;
在不考虑前两个read和write情况下
后面四个变量 总计占用空间为1+2+1+1=5位,不到一个字节。
不过 随着内存和flash越来越便宜,位域操作已经用的越来越少了,更多用在寄存器操作上。
参考技术A 首先,定义一个结构的一般形式为:struct结构名
//成员表列
;
成员表由若干个成员组成,
每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符
成员名;”。成员名的命名应符合标识符的书写规定。例如:
struct
stu
int
num;
char
name[20];
char
sex;
float
score;
;
在这个结构定义中,结构名为stu,该结构由4个成员组成。
第一个成员为num,整型变量;第二个成员为name,字符型数组;第三个成员为sex,字符型变量;第四个成员为score,浮点型变量。
应注意在括号后的分号是必不可少的。
然后,当结构定义完成后,即创建了一种数据类型,可以像int、float等内置类型一样使用,以上面定义的stu结构体来和int类型对比着看。
int
a;//定义一个int类型的变量a
stu
a;
//定义一个stu类型的变量a
int
*p;
//定义一个int类型的指针p
stu
*p;
//定义一个stu类型的指针p
int
a[10];//定义一个int类型的数组a,它有10个元素,每个元素是int类型
stu
a[10];//定义一个stu类型的数组a,它有10个元素,每个元素是stu类型。 参考技术B 位串占多少位
c语言结构体初始化
我用的是vs2010,按照谭浩强书里的page--297,页,说是可以有:strcut student b =.name="zhang fang";这种初始化形式啊,这里为什么会出错呢?
你的结构体初始化只初始化了 name[20]
其余俩个变量没有初始化,所以会报错
你可以这样初始化 struct wo b(1,"jack",'M');
要注意对结构体中所有变量都要初始化,除非这个变量有缺省值追问
为什么都必须初始化,谭浩强说C99标准允许对某一成员初始化,什么是缺省值?
追答对某一成员初始化 是这样的对某一成员 比如
你的例子不是struct wo b;
b.name="jack";
b.num=23;
这样是可以对某一成员赋值的
但你的赋值是对整体赋值,你想一想你的定义struct wo b(,"jack",);
另外两个变量怎么办! 除非你定义结构体的时候如下定义
struct wo
int num=0; //这就是缺省值
char name[20]="jack";
char c; //这个就没有缺省值,懂了吧
以上是关于请问 C语言里的 结构体中定义变量 后面的:是啥意思的主要内容,如果未能解决你的问题,请参考以下文章