编程规范
1.程序块要用缩进风格,缩进的空格数为四个
2.每个块要空行
3.长语句要换行
4.函数或过程中参数过长,适当划分
5.一行一条语句
6.if、for、do、while……独自占一行,且这之后的执行语句无论多少都加{}
7.对齐只用空格,不用tab
8.在两个以上关键字,变量,常量进行对等操作时,它们之间操作符要有空格
注释
1.要有20%的注释内容(多行注释建议使用/……/)
2.说明性文件
函数参数顺序点
函数调用过程中,变量值发生变化的点,成为函数参数“顺序点”。
函数参数求值从右往左。
i++按个计算结果进栈 ,所有的++i与i的值相同
比如说:
int i=0;
printf("%d,%d,%d",i++,i++,i++);
i=0;
printf("%d,%d,%d,%d,%d",++i,++i,i++,++i,i++);
所得的结果与我们所想的可能会不大一样,第一个输出的是2,1,0;第二个是5,5,2,5,0。
可变参数列表
#include<stdarg.h>中定义了相关方法
typedef struct{char * ao;
int offset;
}va_list;
控制函数
void va_start(va_list ap,last); //可变参数的起始位置
type va_arg(va_list ap,type); //取参数
void va_end(va_list ap); //结束
void va_copy(va_list dest,va_list src);
递归函数
定义:在函数调用时,直接或间接地自己调用自己的函数称为递归函数。
递归条件
1.须有完成函数任务的语句
2.一个能确定是否能避免递归调用的测试
3.先测试再返回
特点
1.不是复制函数,会在内存中分配新的内存单元
2.不省时间空间