C语言培训02

  苦逼的培训第二天了,苦逼的日子还在继续,C语言啊,不会害怕的,继续加油!

  今天上午还是培训的是低级错误案例,主要的内容是做练习题,然后是每个小组讨论题目,题目都是一些基本的案例,也是公司实际产品中出现的错误,有些错误是很低级,但是谁也不敢保证这些错误不发生在自己身上,主要的错误归纳为一下几点:

1:字符串拷贝时忘了拷贝‘\0’结束符
2:申请内存时要判断指针是否申请成功,校验指针有效性。
3:内存用完以后一定要释放,而且把指针设置为空
4:还有一些设计结构体大小的问题,特别是结构体对齐方式。结构体对齐字节大小是取 
      min(机器默认字节,结构体中最大字节)。还应该注意的是short型对齐是从偶数位开
    始    的,char可以从任意位置开始等
5:宏定义的一些使用方法,宏中多条语句连接符是\,例如宏定义如下
    #define FUNC(A) A++\A=A*10
    int A=10;
    if(A>10)
        FUNC(A);
    执行以后的:A=100;了
6:还有就是大小端的转换
7:不要忘记取地址符 &

  今天上午还拖堂好久才完成了低级案例分析这个课程,我们那位尊敬的老师也要回去了。下午的课程是关于代码性能和维护性。主要讲了几下几点:

  1:为什么要代码性能的优化?

1:双重循环,小循环在外面,大循环在里面(原因是要看反汇编的代码)
2:循环体内工作量最小
3:重复使用的变量应该缓存起来,避免无所谓的计算
4:避免不必要的内存拷贝
5:较大的结构体作为函数入参时,应该使用结构体指针传递,避免所谓的数据泥团
6:判断语句 把最有可能的放在前面,高概率在前
7:在需要的时候才申请和释放内存
8:日志必须按合适的级别分级打印,
9:操作文件时使用缓存机制

  2:性能优化的方法论

1:以空间换取时间,现在存储成本很低了,牺牲空间换时间是值得的
2:使用模板复制
3:减少压栈成本,特别是函数调用,每次函数调用都是压栈处理。函数参数尽量越少越
     好,避免使用递归函数    
4:改变判断顺序,就是高概率事件放在前面
5:应用层软件遍历查找
6:不建议使用静态函数或变量(影响以后系统打补丁)
原文地址:https://www.cnblogs.com/lemonloves/p/2937700.html