问题
1.空函数的函数体可以作为存根(stub)使用。为尚未实现的代码保留一个位置。我们可以将空函数在头文件中声明,使这类存根也可以参与编译,为后续添加需求做准备。
2。在ANSI C 中,函数的原型并非必须,这当然是缺点。先编译器预先提供一些函数的特定信息显然更为安全。
3.通常,表达式的类型就是函数声明的类型。只有当编译器可以通过寻常算数转换为正确类型时,才允许返回类型与函数声明的返回类型不同的表达式。
4.从表达式内部调用一个过程类型的函数时一个严重的错误,在表达式的求值过程中会使用一个不可预测的值。
5.将可能发生错误。应为值得类型并不是值得内在本质,而是取决于它被使用的方式。这样的情况可能有数据的截断。
6.可能出错,将发生类型转换。
7.亲证无错,
8.如果一个递归函数内部所执行的最后一条语句就是调用自身时,例如
fuc()
{
...
return (fuc());
}
那么它就称之为尾部递归。尾部递归通常很容易的改写为循环的形式,效率会高。
9.如果函数的原型同时也被#include指令包含到定义函数的文件中,编译器就可以确认函数原型与定义的匹配。