目录
函数声明
在C语言中,我们知道,对于变量,需要先声明再使用;对于函数,我们也需要声明再使用。
函数声明格式
int add(int x,int y);//一定不要忘记带;
因为编译器是从上往下扫描执行代码的,因此函数声明需要放在该函数被调用之前,目的是告诉编译器有这么一个函数。虽然我这里对函数做了一个声明,告诉编译器有这么一个函数,但是是否定义(实现)该函数,或者是后面是否调用该函数,也不一定需要。
函数声明的作用:
- 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是否存在,函数声明决定不了。
- 函数的声明一般出现在函数的使用之前,要满足先声明后使用。
- 函数的声明一般要放在头文件中的。
代码示例
#include<stdio.h>
//声明加法函数
int add(int a, int b);
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int ret=add(a, b);//ret接收函数返回值
printf("%d\n",ret);
return 0;
}
//实现加法函数
int add(int a, int b)
{
return a + b;
}
这里如果不加函数声明,编译器就识别不了add函数,程序无法运行。
头文件中的函数声明
另外,函数的代码一般要放在头文件中。
例如:我们实现代码的模块化时,对于自己写的函数,可以将函数的声明放在头文件中
函数定义
函数的定义是指函数的具体实现,交代函数的功能实现。
代码示例
#include<stdio.h>
//加法函数
int add(int a, int b)
{
return a + b;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int ret=add(a, b);//ret接收函数返回值
printf("%d\n",ret);
return 0;
}
有朋友可能就有疑惑了,函数的声明不是规定了函数需要先声明再使用吗?你这里没有声明,为什么代码能运行呢?编译器是从上往下扫描执行代码的,这里编译器先是扫描到add函数,所以编译器就知道这里有这么一个函数,然后扫描main函数,main函数是程序执行的入口,因此执行main函数,创建a,b变量,读取变量a、b之后,来到调用add函数这里,因为刚才编译器从上往下扫描时已经知道有add函数了,所以这里就会进入add函数执行代码,直到(最后执行完代码或者)碰到return跳出函数,回到主函数,printf打印,return 0结束程序。
因此函数定义是一种特殊的函数声明。通常我们一般直接把函数定义放前面,而不会写函数的声明。但是这里要特别注意的是,如果不使用函数声明,函数的定义就一定要放在该函数被调用之前。
代码的模块化
现在写的代码体量小,但是一旦我们遇到代码体量比较大时,我们就应该采用模块化的代码书写形式。那么什么是代码的模块化呢?例如:我们要写一个计算机,计算器有加分、减法、乘法、除法......往往是多个程序员来完成,不可能说多个程序员一起在main函数中写代码,那么这个时候就需要实现代码的模块化,将代码分成多个模块,例如这里的计算器就可以分成加法、减法、乘法、除法......多个模块
这里我以加法模块详细举例:
这里要注意的是,<>包裹的是标准库实现,""包裹自己写的函数的头文件