20_02_10笔记——《你必须知道的495个C语言问题》

《你必须知道的495个C语言问题》笔记

2.12 怎样从/向数据文件读/写结构?
最简单:
fwrite(&somestruct,sizeof somestruct,1,fp);
有fwrite原型:
fwrite((char *)somestruct,sizeof somestruct,1,fp);
可移植性:
写一对函数,按域读写。

2.13 编辑器在内存中留下了空洞?怎么控制对齐方式?
自动内存对齐,不便处理;
最大限度降低影响:把结构中的域按从大到小的顺序排列;
可用位域,但也有缺点。

2.14 为什么sizeof返回的大于结构大小的期望值?尾部有填充?
为了分配时对齐,可能有尾部填充或内部填充,结构不是数组的成员,末尾填充也会保持。

2.15 如何确定域在结构中的字节偏移量?
<stddef.h>中定义了offsetof宏,用offsetof(structs,f)可以计算f在s中的偏移量。

2.16 怎样在运用时用名字访问结构中的域?
创建表,保存名称和用offsetof()计算的域偏移量。
a,b的偏移量offsetb=offsetof(struct a,b)。

2.20 结构和联合有什么区别?
联合本质是一个成员相互重叠的结构,大小是它最大成员的大小,结构是所有的之和。

2.21 初始化联合?
ANSI C中,联合的第一个命名成员可被初始化;
C99引入“指定初始式”?

2.23 枚举和一组预处理的#define有什么不同?
c标准表明枚举为整型,枚举常量为in型。

2.24 有什么显示枚举值符号的方法?
没有。emmm…
自己写函数,将枚举常量映射到字符串;
或通过switch语句;
或通过搜索数组?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值