函数
- C源程序是由函数组成的
- C语言提供了丰富的库函数
- 用户可以自己定义函数
- 函数:就是一段具备特定功能的程序段
函数定义格式
- 确定函数名
- 确定形参列表
形参列表中的变量只有当函数被调用时才会分配存储空间
形参列表中的每一个变量我们称之为:形式参数,简称形参
调用函数时传入的参数,我们称之为实际参数,简称实参
- 确定返回值
- 确定返回值类型
// 格式
返回值类型 函数名称(形参列表){
函数体;
}
return的作用
函数调用注意点
- 如果"基本数据类型"(char int double float)作为函数的参数,在函数中修改形参的值是不会影响到外面的实参的值
- 实参的个数必须和形参的个数相同
- 返回值和返回值类型可以不一样,但是如果返回值和返回值类型不同,系统会对返回值进行自动类型转换
- 函数可以有形参,也可以没有形参
- 函数可以有返回值,也可以没有,没有返回值用void
- C语言是弱语言,如果函数没有返回值类型,那么默认是int类型
函数的声明和实现
- 默认情况下,只有后面定义的函数才可以调用前面定义过的函数
- 如果将函数定义写在main函数后面,而且main函数能正常调用这些函数,那么就必须在main函数的前面进行函数的声明
- C语言规定:
一般情况下,如果想要调用函数,该函数必须在调用之前出现
- 函数声明的作用:在调用函数之前,告诉系统有这个函数,并且告诉系统,该函数叫什么名字,接收什么参数,返回什么类型
void func();
int sum(int num1, int num2);
int sum(int, int);//这种写法也可以
注意:如果函数的返回值是int类型,那么不用写声明,函数也不会报错
- 函数的声明,只需要在函数被使用之前告知系统就可以了,它可以在函数的外面,也可以在函数的里面
-
main函数分析
- main是函数的名称,是系统规定的名称,系统启动程序就会调用名称叫做main的函数
- main函数只能由系统调用,不能手动调用
/**
* 其实系统在启动程序的时候,会给我们的程序传递一些参数
*
* @param argc 就是系统传递进来的参数个数,默认是1
* @param argv 就是系统传递进来的参数实际的值,默认是程序的名称
*/
int main(int argc, const char * argv[]){
// 返回给操作系统,如果返回0,代表程序结束,如果返回其它值,表示程序非正常结束
return 0;
}
递归
- 一般情况下,能用循环做的事情,递归都可以完成
注意:不是什么时候都使用递归,递归要慎用(性能问题)
- 什么是递归:函数内部调用自己
注意:递归一定要有一个明确的结束条件,否则会造成死循环