1.声明数组时用a[],调用数组时用a。
2.C函数的所有参数均以“传值调用”方式进行传递,这意味着函数将获得参数值的一份拷贝,函数可以放心修改,而不必担心改变调用的参数的实际值。
...int main(void)..function(a,b); ...int function(int x,int y)...修改的是x,y的值。
3.对于数组,函数调用将会改变,说起来像是“传址调用”但实际上却是传值,因为,数组名实际是指针,函数调用相当于拷贝了一份指针,对函数参数修改时,相当于通过这份拷贝指针间接访问指针指向的内容。
4.在声明数组参数时不指定它的长度是合法的,因为因为函数并不为数组元素分配内存。 间接访问操作将访问调用程序中的数组元素。
5.缺省相当于是默认的意思。
6.C运行时堆栈支持递归函数的实现,但是,标准并未说明递归需要堆栈,但堆栈非常适合实现递归,所以很多编译器都使用堆栈实现递归。
7.在函数中,如果return没有返回值,或者没有任何return语句,在其他很多语言中,这类函数被称为过程。
待解决:7.4 黑盒与ADT(抽象数据类型):限制函数和数据的作用域。这种技巧被称为黑盒设计。
7.5.1 追踪递归函数,递归与迭代不熟悉
7.6可变参数列表:通过宏来实现