函数

函数

函数定义

       把函数类型和函数名分写两行纯属风格问题。这种写法可以是我们在使用视觉或某些工具程序追踪源代码时更容易查找函数名。

原型

       旧式的K&R C只记住函数的返回值类型,而不保存函数的参数数量和类型信息。

函数的缺省认定

       当程序调用一个无法见到的原型的函数时,编译器便认为该函数返回一个整型值。

函数的参数

       C函数的所有参数均以传值调用方式进行传递,这意味着函数将获得参数值的一份拷贝。对于传址调用其实也是传值调用,只不过间接引用的使用时的看起来不像传值调用而已。

ADT和黑盒

       ADTabstract data type抽象数据类型,可以限制函数和数据定义的作用域。这个技巧也被称为黑盒black box设计。ADT使得程序的各个部分之间相互更加独立。

       限制对模块的访问可以通过static关键字的合理使用来实现。

递归与迭代

       许多问题都是以递归的形式进行解释的,这只是因为它比非递归形式更为清晰,但是,这些问题的迭代实现往往比递归实现效率更高,虽然代码的可读性可能稍差一些。

       比如最著名的Fibonacci数列,在计算Fibonacci30)的时候,Fibonacci3)的值被计算了317811次,这些值完全一样,是巨大的浪费。