C 学习笔记 - 函数
<C Primer Plus> 这本书买回来,前面的都没看,就直接看了第 9 章:函数。在这一章的第 3 小节讲到了 "递归",由于之前没有系统的学习过数据结构,所以在这儿便停下了脚步。
不过还是先来总结一下函数的一些基本的知识吧!
看完了这一章的前两个小节,再结合一些网络资料,我对以下几个问题有了清晰的认识:
1. 什么是函数?
2. 为什么需要函数?
3. 函数的声明、定义与调用
4. 形式参数与实际参数
5. 函数的分类
下面我就来一一阐述这些问题。
第一个问题:什么是函数?
函数的英文译义为:Function,又有功能、作用、职责的中文意思。根据这些中文译义就可以推断出:函数是用来实现某种功能工具,但是这样的推断很不准确。
书上是这样讲的:函数是用于完成特定任务的程序代码的自包含单元。这句话表达的非常准确。
我理解为是这样的:能够完成特定独立功能的代码单元。比书上的稍微简洁一点。
第二个问题:为什么需要函数?
C# 中 函数被称之为方法,当然其功能也弱化了,没有 C 语言函数功能那么强大。C 语言的基本单元是函数,但在 C# 中基本单元就变成了 "类",Java、C++ 中也是如此。
在以往的 C# 编程中,每当我发现存在冗余的代码的时候,我就会将其抽离出来,然后写一个独立的方法,在需要这些代码处调用此方法。
这样的话就避免了许多重复性操作,C 语言中的函数也是如此。所以第一个原因就是:使用函数可以避免不必要的重复性操作。
即便函数在程序中只使用一次,我觉得将其以函数的实现也是很有必要的。因为函数使得程序更加模块化,从而有利于程序的阅读、修改和完善。这就是第二个原因。
第三个问题:函数的声明、定义与调用
函数可以不需要声明,便直接定义(实现)。但当函数被调用的时候,函数的定义必须在主调函数的前面,也就是说:必须在被调用之前就定义(实现)好了。
如果函数既没有声明又定义(实现)在主调函数的后面,那么编译器会报相应的错误。如果函数在调用之前已经声明好了,但是定义在主调函数之后的话,这样也是允许的。
函数的声明:是告诉编译器即将可能出现的若干个字母代表的是一个函数。
第四个问题:形式参数与实际参数
其实这个没什么好说的:形式参数就是在函数声明或定义(实现)时,在圆括号里面声明的参数就是形式参数。
例如:void max(int a, int b); 或者 void max(int a, int b){...}
而实际参数就是在函数被调用的地方,在圆括号里面的参数,就是一些具有实际意义的值。
例如:max(5, 6);
最后一个问题:函数的分类
函数可以分为以下几类:
库函数 和 用户自定义函数
普通函数 和 主函数(main函数)
有参函数 和 无参函数
有返回值函数 和 无返回值函数
以上就是我对这些问题的理解。其实都很简单,只是做个记录,如果以后忘记了或不清楚的话,只需要看一下就 OK 了!