首页 理论教育 C语言函数声明及调用101

C语言函数声明及调用101

时间:2026-01-26 理论教育 可欣 版权反馈
【摘要】:③函数声明的位置。函数声明也可以放在调用函数的内部说明部分。例如,在上例的main函数中,可以省略对max函数的声明。例5-1三种函数调用方式示例。图5-2程序运行结果3.函数调用时的语法要求函数调用时有以下4种语法要求。

1.函数声明

函数在调用之前需要在调用函数中先声明。对函数进行声明,能够使C语言的编译程序在编译时进行有效的类型检查,以防止可能出现的错误。

函数声明的两种形式如下:

图示

说明:

①函数声明语句中的类型名必须与函数返回值的类型一致。

②函数声明语句可以是一条独立的语句,也可以与普通变量一起出现在同一个类型的定义语句中。

例如:

图示

在程序设计中,经常将函数声明作为一条独立的语句出现在调用函数中。例如,在下面程序段的main函数中,使用一条独立的语句对max函数进行声明。

图示

③函数声明的位置。

函数声明可以放在所有函数定义之前,此时被声明的函数在这个C语言程序文件的任何函数中都能被调用。

函数声明也可以放在调用函数的内部说明部分。此时被声明的函数只能在调用函数的内部被调用,在调用函数的外部不能被调用。

④C语言规定有以下两种情况,可以在调用函数中省略对被调用函数的声明。

如果被调用函数的定义出现在调用函数之前,则在调用函数中可以省略对被调用函数的声明。例如,在上例的main函数中,可以省略对max函数的声明。

如果被调用的函数的返回值是整型或字符型时,则可对被调用函数直接调用,而不需要对被调用函数进行声明。这时系统虽然会在编译时给出警告信息但是连接会正常进行,程序运行时系统将自动对被调用函数返回值按整型处理。

2.函数的调用

调用函数的形式如下:

函数名(实参表列)

在实参表列中,多个实参之间要用逗号隔开。实参的个数、顺序、类型与对应形参的个数、顺序、类型一致。若调用无参函数,函数名后的括号不可省略。

按函数在程序中出现的位置来分,可以有以下三种函数调用方式。

(1)函数表达式。调用的函数用于求值时,调用函数出现在一个表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。

例如:

图示

函数max是表达式的一部分,它的值乘2再赋给c。

(2)函数参数。调用的函数作为一个函数的实参,这种实参称为函数参数。

例如:

图示

其中max(c,d)是一次函数调用,它的值作为函数sum调用的实参。s的值是a与函数max值作为实参的sum函数的返回值。

说明:

函数参数的调用方式,实质上也是“函数表达式”调用方式中的一种,因为函数的实参本来就可以是表达式形式。

(3)函数语句。函数仅可进行某些操作而不返回函数值,这时调用的函数可以作为一个独立的语句。把调用的函数作为一个语句时,不要求函数带回值,只要求函数完成一定的操作。

例5-1 三种函数调用方式示例。

图示(https://www.xing528.com)

图示

程序运行结果如图5-2所示。

图示

图5-2 程序运行结果

3.函数调用时的语法要求

函数调用时有以下4种语法要求。

①调用函数时,函数名必须与所调用的函数名字完全相同。

②实参的个数、顺序、类型必须与形参的个数、顺序、类型一致。如果类型不匹配,C语言编译系统按赋值兼容的规则进行转换。

③函数必须先定义后调用。

④函数可以直接或间接地调用自己,称为递归调用(参阅5.4)。

下面是函数调用的示例:

例5-2 简单的有参函数print(),有一个整型参数n,功能是在一行中打印n个“*”号。

图示

图示

程序运行的结果如图5-3所示。

图示

图5-3 程序运行结果

本例中,因为函数print没有返回值,所以函数体中没有return语句。

函数调用语句“print(3);”中的“(8)”被称为实际参数表(简称实参表),其中的8是实际参数(简称实参)。实参的个数、类型应与形参相同。

例5-3 设计函数,计算1+2+3+…+n的值。

参考程序:

图示

在此程序中,函数sum()封装了求和运算的细节,主调函数调用了sum()函数。程序运行时,输入n的值为100。运行结果如图5-4所示。

图示

图5-4 程序运行结果

例5-4 设计函数,计算图示。已知计算图示的迭代公式是图示要求计算精度为10-6

参考程序:

图示

程序运行结果如图5-5所示。

图示

图5-5 程序运行结果

在此程序中,函数getsqrt()封装了开方运算的细节,主调函数在循环中以数组元素x[i]作为实参,多次调用getsqrt()函数,计算结果存于数组xsqrt之中。程序输出的第一列是函数getsqrt()的计算值,第二列是库函数sqrt()的计算值,二者对比可以看出计算精度确实是10-6

在函数调用中实参的形式可以是常量、变量、数组元素、表达式等。以下是一些getsqrt()的调用示例。

图示

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈