函数这块感觉多练比较实在,许多理论只靠理解还是不容易记住的,便敲边看自然就能记得住,但一段时间不用后便会忘记,所以为了防止日后我的遗忘(以及应付明天的函数考核)出了这篇函数理论小点(潦草了点,但希望日后有用)。
- 函数期末执行程序时总是从main函数开始
- 函数要先声明才能被调用(main函数有且只有一个,不能被调用)
- 函数是平行独立的,在定义时不能嵌套
- 声明函数三要素:参数类型、函数名、函数参数个数
- 定义函数时参数类型要统一,函数内的变量名为形参,调用时括号内变量为实参
- void型为空函数,不会将任何值带回主函数,但可对原有数据进行一系列操作
- 若被调用的函数在主函数前,可不用声明
- 同一个函数可以被一个或多个函数同时任意调用多次(递归、回溯…)
- 函数不被调用时,不占存储单元,调用结束时形参被释放
- 值的传递是单向的,只能由实参传到形参
数组作为函数参量
-
(一维)将数组名作为函数实参,即数组首元素地址
-
(二维)可省略第一维大小,其它维大小无法省略,一般还要将数组的长度作为一个形参传递
-
全局变量在程序全部执行过程都占存储单元,局部变量则在使用时占存储(全局变量会降低函数的使用率,尤其在和别人合作做项目的时候)
-
存储类别:auto(自动,函数的形参和变量)、static(静态,调用函数时变量会保留上次调用结束时的值,不确定的数,占更多内存,屏蔽作用,仅限于被本文件引用,其他文件不行)、register(寄存器变量)、extern(外部变量)
-
函数的作用域和生命周期
-
学到函数时,就会开始牵扯到一点点点的算法,如递归、递推……算法较抽象,较难以掌握
递归即函数自身调用自身,相当于循环,结束递归需要结束条件