1.把函数的类型与函数名分写成两行纯属风格问题。这种写法可以使我们在使用视觉或者某些工具追踪代码时更容易查找程序。
2.ruturn 语法并没有要求你加上括号。
3.向编译器提供函数信息的方法是使用函数原型。原型总结了函数定义的起始部分的声明,向编译器提供有关该函数应该如何调用的完整信息。
在函数原型后面要加上分好,它区分了函数原型和函数定义的起始部分,告诉编译器函数的相关信息。
4.一个没有参数的函数的原型应该写成下面这个样子
int * function(void)
关键字void提示没有任何参数,而不是表示它有一个类型为void的参数。
5,当程序调用一个无法见到原型的函数时,编译器便认为该函数返回一个整型值。
6函数的参数
传递给函数的标量参数是传值调用的。
传递给函数的数组参数在行为上就像是他们是通过传址调用的那样
7 限制对模块的访问时通过static关键字的合理使用实现的,它可以限制对哪些并非接口的函数和数据的访问。
8.putchar是向终端输出一个字符。
9 斐波那契数可以用递归和迭代实现。但是递归代价很大
int fibonacci(int n)
{
if(n《=2)
return 1;
return fibonacci(n-2)+fibonacci(n-1);
}
int fibonacci(int n)
int result;
int previous_result;
int older_result;
result=previcou_result=1;
while(n>2)
{
n-=1;
older_result=previous_result;
previous_result=result;
result+previous_result+older_result;
}
return result;
}
10.宏是由预处理器实现的。
11.抽象数据类型可以减少程序对模块实现细节的依赖,从而提高程序的可靠性。