注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。
测试环境:Ubuntu 10.10
GCC版本:4.4.5
一、函数设计原则
1)函数从意义上应该是一个独立的功能模块
2)函数名要在一定程度上反映函数的功能
3)函数参数名要能够体现参数的意义
4)尽量避免在函数中使用全局变量
void sc(char *s1,char *s2);
void str_copy(char *str_dest,char *str_src);
5)当函数参数不应该在函数体内部被修改时,应加上const声明
6)如果参数是指针,且仅作输入参数,则应加上const声明
void str_copy(char *str_dest, const char *str_src);
7)不能省略返回值的类型
- 如果函数没有返回值,那么应声明为void类型
8)对参数进行有效性检查
- 对于指针参数的检查尤为重要
9)不要返回指向“栈内存”的指针
- 栈内存在函数体结束时被自动释放
10)函数体的规模要小,尽量控制在80行代码之内(不一定80行,原则是尽量短小精悍)
11)相同的输入对应相同的输出,避免函数带有“记忆”功能
12)避免函数有过多的参数,参数个数尽量控制在4个以内
13)有时候函数不需要返回值,但为了增加灵活性,如支持链式表达,可以附加返回值
char s[64];
int len = strlen(strcpy(s,"android"));
14)函数名与返回值类型在语义上不可冲突
char c = getchar();
if(EOF == c)
{
//...
}
课程总结:
1)C语言的学习需要勤思考勤动手才能得到提高
2)难点部分为指针的学习
- 指针的本质,指针的运算,指针和数组
3)学习过程可以采用各个击破的方法
- 在一个特定的时间段只重点学习和练习某个主题
4)在熟练掌握C语言的各个特性后再进行项目练习