C语言是面向过程的语言,每个C程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数。
函数就是一个功能或者某个完成某个功能的模块。
一,函数的分类
自定义函数:
返回类型 函数名 (形参)
{
函数体;//模块的过程
return 返回值表达式;
}
- 返回类型:一个函数可以返回一个值。return_type是函数返回的值的数据类型。有些函数所执行所需的操作后不需要返回值,在这种情况下,return_type是关键字 void。
- 函数名:这是函数的实际名称,函数名和参数列表一起构成函数签名。
- 参数:参数就像占位符。当函数被调用时,你向参数传递一个值,这个值被称为实际参数。参数列表包括参数的类型,顺序,数量。参数是可选的,也就是说,函数可能不包含参数
- 函数体:包含一组定义函数执行任务的语句。
系统函数:由系统提供的功能(模块)printf
二,调用函数:执行"一次"函数的过程
函数名(); 注:函数必须被定义 *函数表达式
注:调用函数时注意,1,函数必须存在 2,形参必须匹配
创建一个冒泡排序的功能的函数
将bubble函数声明在bubble.h文件
在work.c中调用bubble函数
通过编译 bubble.c 和work.c 得出结论
三,函数声明: 函数声明回告诉编译器函数名称及如何调用函数。函数的实际主题可以单独定义。
函数的声明包括以下几个部分: 返回类型 名称 (形参);
作用域:能被引用的范围(全局,局部)
1、全局: 在函数外定义的变量
作用域:从定义开始,到本文件结束。
2、局部:在函数内定义的变量(形参变量,函数内定义变量)
作用域:只在函数内
注:在同一作用域内不允许出现同名现象;
生存周期:空间从分配开始,到运行结束。
1、“栈”区(动态区):当函数运行开始,空间被申请,当函数运行结束,空间被释放。
定义变量: [auto] [有无符号] 类型 变量名; (只能在函数内) ; 形参变量
2、静态区:程序运行开始时空间被申请,程序运行结束时,空间被释放。
全局变量。 静态局部变量 ; static 类型 变量名
3、堆区(程序员区)
头文件:就是存放模块提供函数原型或类型声明
后缀名: .h
1、外部声明:告诉编译器此类型来自非本文件(外文件)
extern 声明;
函数: extern 函数原型;
变量:extern 变量原型; extern int a;
注 : C 语言规定,如果在定义函数时省略 extern,则默认为外部函数。
在需要调用此函数的其他文件中,需要对此函数作声明(不要忘记,即使在本文件中调用一个函数,也要用函数原型来声明)。在对此函数作声明时,要加关键字 extern,表示该函数是在其他文件中定义的外部函数。
2、引用头文件:#include<>只有会去系统目录下查找
#include""会去指定路径下查找,如果查找不到,则会去系统下
递归:直接或者间接调用自身函数
根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。
如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加 static
可以使函数的作用域只局限于所在文件。即使在不同的文件中有同名的内部函数,也互不干扰。提高了程序的可靠性。