5.1基本概念
函数分为主函数和子函数,一个程序中主函数有且只有一个,是程序的入口,而函数(或称子函数)可以有很多。子函数的存在可以让主函数不臃肿、一目了然,增强代码可读性。
引入函数的意义:利用率高,可读性强,利于移植
前文介绍介绍过变量的作用域,跨函数传递参数,不会改变变量作用域,一般只是把主函数中的实参传递给了子函数中的形参,子函数处理后再return一个值。
5.1.1定义
- 在main函数前,直接定义。
int - 在main函数后,先声明再定义。
int 注:1.函数定义不能嵌套,互相独立。
错误示范
2.函数命名一目了然,可读性强。
3.()内可以没有形参,表示不传入数据,但()不能省。
4.void类型函数无返回值。
5.指针类型函数返回指针指向地址。
char 6.return回传数据类型和函数类型不一样时,转换为函数类型,如本例回传数据类型int。
5.1.2调用
int 注:函数可以嵌套调用,如递归调用。
- 递归调用
直接递归就是调用自身,间接递归就是通过其他函数调用自身。
达到终结条件,直接求解。
未达终结条件,递归调用。
调用过程:递推、回归。比较耗时耗内存,能用迭代解决的就用迭代解决。
适用递归的问题:子问题与原问题同,规模更小。
5.1.3参数传递
一般情况,每个子函数只能回传一个值,若要回传多个值,需使用引用参数或者指针参数。
例
- ab是传值参数,改变ab值对实参无影响,数据从实参到形参单向传递。
- sum是引用参数,改变sum直接改变实参,实参形参共用同一内存单元。
int - p是指针参数,p中存放实参地址,改变p指向的内容即可改变实参。
实参可以是数组名、变量的地址、指针变量。
5.2 函数应用
例 