【C语言】函数(三):为什么要有函数声明

前言

在上文中已经介绍了函数调用,分为传值调用和传址调用,以及嵌套调用和链式访问。在本文中将介绍函数的声明和定义,以及为什么要有函数的声明?

我们先看这么一段代码:

int Add(int x, int y)
{
	return x + y;
}

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int result = Add(a, b); 
	printf("%d", result);

	return 0;
}

这段代码是利用一个函数实现加法操作。我们好像没有看到函数声明。不免疑问函数声明真的有必要吗?

函数定义

函数的定义就是函数的具体实现。函数定义是一种特殊的声明。

在前言部分的代码中,函数定义就是:

int Add(int x, int y)
{
	return x + y;
}

函数声明

声明,顾名思义就是告诉。函数声明就是告诉编译器有一个函数叫什么,参数是什么,返回类型是什么等等。当然函数声明一定在函数的使用之前,要满足先声明再使用。

在前言部分的代码中没有函数声明。这是因为我们一般将函数定义写在主函数的前面,主函数在最后。如果将函数定义写在主函数的后面,那么在程序前面就需要进行函数的声明。原因如下:程序真正开始执行的时候,编译器会先从最开始往后扫描,扫描到主函数后开始正式编译,函数调用时往往都写在主函数内部,如果你将函数写在了主函数的后面并且在前面没有声明,也就是说编译器在编译的过程中进行到函数调用的部分了,但是它从开始一直扫描到这里的时候都没有见过你要调用的函数在哪里,所以它找不到你的函数在哪里,于是就会报错,就像这样:
在这里插入图片描述
这个时候,我们只需要在程序前面进行函数声明就可以了:
在这里插入图片描述
一定要注意函数声明结尾要有分号

为什么要有函数声明

原因1:分模块编程

我们已经了解过函数声明了,难道函数声明就是这样用的吗?我把函数写在主函数前面不就可以了,函数声明不是多此一举?我们认为它是一个规定就行了?

我们想一想,在公司中一个项目不可能只有你一个人进行代码的编写,一般是成百上千的人在写,这个时候所有人都在一个源文件里面写程序,等你写完他写,他写完下一个人写,这要是完成一个产品,不得到猴年马月去了,也容易乱套,甚至出错都不知道是哪的错,是谁写的代码出了错。

公司都是团队协作开发的,所以需要分模块去写,方便协作,最后进行整合。
假设我现在有一个团队,现在要开发一款计算器(假设这个计算器的实现很复杂),要有加减乘除四则运算和其他各种运算。

在这里插入图片描述
如果是实现加法操作的程序员就需要编写这样的代码:
在这里插入图片描述
最后负责各个模块的程序员写完后将它们整合起来就可以了。

原因2:静态库文件

假设现在你写了一个非常厉害的库,能够实现非常复杂的操作,这个时候某公司非常需要这样的功能,你可以选择把它卖出去挣钱,又不卖源代码,于是你将你写的库的静态库文件(后缀是.lib,打开静态库文件不会出现源代码)和头文件卖给某公司,头文件里可能是几百个函数声明(所以函数的声明一般放在头文件中),让某公司知道这些函数怎么使用。可能该公司还会每年给你多少钱让你对这个进行维护,甚至可能直接重金招聘你。

改成静态库的方法:
在这里插入图片描述
公司要使用你的库,就需要在他们编写的文件中导入你的静态库。

#include "add.h" //公司需要使用你卖给他们的头文件
#pragma comment(lib,"add.lib") //导入静态库,假设你写的库就是add
  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三尺h

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值