返回首页 - Notes - 2011

C语言代码优化


i++和++i效率差异

  1. 在内建数据类型的情况下,两者没有差别
  2. 在自定义数据类型的情况下,++i 效率较高

两数交换的常用方法

1 种方法多用了一个临时变量

2 种方法进行加减运算时有可能会发生溢出

3 种方法最好,效率最高


宏的使用

可以用宏来代替简单的函数定义和判断语句,比如用三重条件操作符可以产生比 if-else 更优化的代码,并且书写更简洁

#define MAX(x, y) (((x) > (y)) ? (x) : (y))


输入清缓

在使用 scanf() 获取标准输入时,对于字符数据很容易因为换行符的存在而受到干扰,导致数据获取出错

所以在每次获取字符数据之前,应使用函数 fflush(stdin) 清空输入缓存,免除后患


预防野指针

为杜绝野指针的出现,最好就是养成习惯,在定义每一个指针时都将其赋初值为 NULL,如:int * p = NULL;

而在使用指针之前,先判断一次指针是否非空,如:if(p != NULL);

或者也可以使用断言,如:assert(p != NULL);

断言同样可用在防止数组越界的操作上

#include <assert.h>
...
assert(i >= 0 && i < 10);
...

date : 2011-08-31