概念
首先,我们要明白什么是函数?
其实,函数是一个简单的独立模块,有一个或多个语句块组成。
函数的分类
- 库函数
- 自定义函数
C语言常用库函数:
- IO函数
- 字符串操作函数
- 字符操作函数
- 内存操作函数
- 时间/日期函数
- 数学函数
- 其他库函数
注意:使用库函数时,一定要包含其对应的头文件
自定义函数:函数名+返回值类型+函数参数
ret_type fun_name(para1, * )
{
statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1 函数参数
函数参数
- 实参:真实传给函数的参数,在函数调用时,必须有确定的值(可以是常量、变量、表达式,函数等)
- 形参:函数名后括号中的变量,只有在函数调用时才会实例化(即分配内存空间),函数调用结束后自动销毁
注意:当实参传给形参的时候,形参是实参的一份临时拷贝,对形参的修改不会改变实参的内容
函数的调用
传值调用:函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参
传址调用:把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式,即函数内部可以直接操作函数外部的变量
函数的嵌套调用与链式访问
嵌套调用
#include <stdio.h>
void new_line()
{
printf("hehe\n");
}
void three_line()
{
int i = 0;
for(i=0; i<3; i++)
{
new_line();
}
}
int main()
{
three_line();
return 0;
}
链式访问:把一个函数的返回值作为另外一个函数的参数
#include <stdio.h>
#include <string.h>
int main()
{
char arr[20] = "hello";
int ret = strlen(strcat(arr,"bit"));
printf("%d\n", ret);
return 0;
}
函数的声明和定义
- 函数声明
1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么,不关心是否存在
2.先声明,后使用
3.放在头文件中
- 函数定义
函数的具体实现
注意:一般将函数的声明放在 .h 文件中,函数的定义放在 .c 文件中(分模块写程序)