回顾
在函数知识总结(一)、(二)两篇文章中细致讲解了函数的概念、库函数、自定义函数、形参实参、return、数组做函数参数、嵌套调用、链式访问等内容。通过链接可以对上述知识进行回顾总结
函数的声明和定义
单个文件
一般我们在使用函数的时候,直接将函数写出来就使用了。
例:写一个函数判断一个年份是不是闰年
上面代码中红色部分是函数的定义,橙色部分是函数的调用。
在这种场景下函数定义在函数调用之前,代码没有问题。
如果将函数的定义放到函数调用后面:
这个代码在VS2022上进行编译会报警告:
这是因为C语言编译器对源代码进行编译的时候,是从第一行往下扫描的,当遇到is_leap_year函数调用的时候,并没有发现前面有is_leap_year的定义,就报出来上述警告。
那么如何解决这个问题呢,就是在函数调用之前先声明一下is_leap_year这个函数,声明函数只需要交代清楚:函数名,函数返回类型和函数参数。
代码修改成下述这样就可以正常编译了:
函数的调用一一定要满足,先声明,后使用;
函数的定义也是一种特殊的声明,所以如果函数定义放在调用之前也是可以的。
多个文件
一般真正使用的大型代码,代码内容会很多,不会将所有代码放在一个文件里,而是根据程序的功能,将代码拆分放在多个文件中。
一般情况下,函数的声明、类型的声明放在头文件(.h)中,函数的实现放在源文件(.c)文件中。
static和extern
static和extern都是C语言中的关键字。
static是静态的意思,可以用来:
- 修饰局部变量
- 修饰全局变量
- 修饰函数
extern是用来声明外部符号的