C语言 对被调用函数的声明和函数原型

在一个函数中调用另一个函数需要具备如下条件:
1.首先被调用的函数必须时已经定义的函数(是库函数或者用户自己定义的函数)。
2.如果使用库函数,应该在本文件开头用#include指令将调用有关库函数时所需用到的信息“包含”到本文件中来。
例如:
#include <stdio.h>
其中,“stdio.h”是一个“头文件”。在stdio.h文件中包含了输入输出库函数的声明。如果不包含“stdio.h”文件,就无法使用输入输出库中的函数。
3.如果使用用户自己定义的函数,该函数的位置在调用它的函数(主调函数)的后面(同一个文件中),应该在主调函数中中对被调函数作声明。声明的作用是把函数名、函数参数的个数和参数类型等信息通知编译系统,以便在遇到函数调用时,编译系统能正确识别函数并检查调用是否合法。如果该函数的位置在调用它的函数(主调函数)的前面,声明可以省略不写。
例题:输入两个实数,用一个函数调用求出它们的和。
【思路】
定义一个函数Add来实现两数相加的功能。首先定义函数Add为float型,它应有两个参数,也为float型。

int main()
{
	float Add(float x,float y);
	float a,b;
	printf("从键盘输入将要相加的两个实数:");
	scanf("%f%f",&a,&b);
	float c;
	c=Add(a,b);
	printf("这两个数相加之和为%f",c);
	return 0;
}
float Add(float x,float y)
{
	float z;
	z=x+y;
	return z;
}

输出:
请添加图片描述
从程序中可以看到:main函数的位置在Add函数的前面,而程序进行编译时是从上到下逐行进行的,如果没有对函数Add的声明,当编译到程序第8行时,编译系统无法确定Add是不是函数名,也无法判断实参(a和b)的类型和个数是否正确,因而无法进行正确性的检查。如果不作检查,在运行时才发现实参与形参类型或个数不一致,出现运行错误,在运行阶段发现错误并重新调试程序比较麻烦,工作量也较大。应该在编译阶段尽可能发现错误,改正错误。
【说明】
使用函数原型作声明是C的一个重要特点。用函数原型来声明函数,能减少编写程序时可能出现的错误。
实际上,在函数声明中的形参名可以省略不写,而只写形参的类型名。如float Add(float,float);
函数声明的两种形式:
(1)函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,… ,参数类型n,参数名n);
(2)函数类型 函数名 (参数类型1,参数类型2,… ,参数类型n);

注意:
1.函数的定义和声明不是同一回事。
函数的定义:是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型以及函数体等,它是一个完整的、独立的函数单位。
函数的声明:是把函数的名字、函数类型以及形参的类型,个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查,它不包含函数体。
2.如果已在文件开头(在所有函数之前),已对本文件中所调用的函数进行了声明,则在各函数中不必对其所调用的函数再作声明。由于在文件的开头(在函数的外部)已对要调用的函数进行了声明,因此在程序编译时,编译系统已从外部声明中知道了函数的有关信息,所以不必在主调函数中再重复声明。写在所有函数前面的外部声明在整个文件范围中有效。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值