第三周工作学习总结
任务
- 重写人民币大小写转换;
- 实现20位数×20位数的大数乘法;
- 阅读编程规范;
- 完成《现代操作系统》前三章阅读;
- 实现控制台打印*图形如下:
完成情况
- 完成
- 完成
- 完成
- 完成
- 未完成
新学内容
一、函数scanf_s
相比于scanf()输入函数,可以多分配一个单位的内存以保护程序的正常运行,但是不能保证结果正确;
在申请最大容量时,多申请一个单位的内存能够避免失误赋值引起的越界操作;
数组名可作为实参传递给指针形参,实际也是将数组首地址赋值给指针,因此在调试处显示现存数据是只显示首地址处的值,类型仍然为指针类型。要查看数组的值,需要到内存窗口查看;
函数memset()可对任何内存块进行初始化赋值操作;
当需要内存拷贝时,用memcpy()替换for循环操作,效率要高。
二、编程规范学习
1.头文件
依赖:本章节特指编译依赖。若x.h包含了y.h,则称作x依赖y。依赖关系会进行传导,如x.h包含y.h,
而y.h又包含了z.h,则x通过y依赖了z。
某产品更有一个“优秀实践”,用于将.c文件通过工具合并成一个比较大的.c文件,从而大幅度提高
编译效率。其根本原因还是在于通过合并.c文件减少了头文件解析次数。但是,这样的“优秀实践”
是对合理划分.c文件的一种破坏。
我们倾向于减少包含头文件,尤其是在头文件中包含头文件,以控制改动代码后的编译时间。
2.原则
{0}. 头文件中适合放置接口的声明,不适合放置实现;
{0}. 头文件应当职责单一;
{0}. 头文件应向稳定的方向包含:依赖的方向应该是:产品依赖于平台,平台依赖于标准库。
3.规则
每一个.c文件应有一个同名.h文件,用于声明需要对外公开的接口;
禁止头文件循环依赖;
.c/.h文件禁止包含用不到的头文件;
头文件应当自包含——自包含就是任意一个头文件均可独立编译;
总是编写内部#include保护符(#define 保护);
禁止在头文件中定义变量;
只能通过包含头文件的方式使用其他.c提供的接口,禁止在.c中通过extern的方式使用外部
函数接口、变量;禁止在extern “C”中包含头文件;
小结
- 调试消除warning(s),每一处警告都可能被攻击;
- 测试程序时考虑边界测试和非法输入,增强程序健壮性。
- 提高程序可读性,应用编程规范书写代码。