C-函数
在本教程中,我们将学习C编程语言中的函数。
什么是函数?
C语言中的函数是由一些执行特定任务的语句组成的代码块。
例如,我们可以有一个greetings()
函数,该函数将在调用时打印问候消息。
函数类型
C语言中有两种类型的函数。
- 库函数
- 用户定义函数
库函数
这些是我们从C库获得的功能,例如strlen()
,concat()
等。
用户定义函数
这些是用户创建的功能,例如" greetings()"或者" displayResult()"等。
main()函数是用户定义的函数,而printf()和scanf()是库函数。
库函数和用户定义函数之间的区别
库函数已经创建并且可以使用了,我们不必编写它。
而用户定义函数是我们必须编写才能使用的函数。
为什么我们需要用户定义的函数?
用户定义的函数可帮助我们将程序分为子程序。
这些子程序旨在执行特定任务,因此使代码更易于开发,测试和调试。
想法是将程序分解为模块(子程序),并以小块形式开发程序,然后将它们组合在一起以解决问题。
例如,如果我们有一个程序来查找矩形的区域,那么我们可以在main()函数中编写整个代码。
或者我们可以使用诸如findArea()
之类的功能将程序划分为子程序。
这将有助于我们轻松地开发代码,并在发生任何错误的情况下也有助于测试和调试。
用户定义函数的三个部分
用户定义的功能包括三个部分。
- 函数声明
- 函数定义
- 函数调用
函数声明
像变量一样,在C语言中,我们必须在调用函数之前先声明一个函数。
函数声明也称为函数原型,它由以下4部分组成。
- 返回类型
- 函数名称
- 参数列表
- 终止分号
在下面的示例中,我们声明一个名为" findArea"的函数,其返回类型为" float",并且该函数带有两个参数" length"和" width",类型为" float"。
float findArea(float length, float width);
返回类型
返回类型告诉我们该函数返回的值的类型。
如果一个函数要返回一个整数值,那么返回类型将被设置为" int"。
如果函数不返回任何值,则将返回类型设置为" void"。
函数名称
函数的名称可以是任何有效的标识符,例如display(),result()等。
不要使用保留关键字来命名函数。
参数列表
参数列表必须用逗号分隔。
如果函数不带参数,则将其设置为" void"。
在下面的示例中,greetings()函数不带参数,不返回任何值。
void greetings(void);
参数名称是可选的,可以在函数声明中忽略。
在下面的示例中,我们没有编写参数名称。
float findArea(float, float);
函数声明和函数定义中的参数名称不必相同。
终止分号
终止分号";"标志着函数声明的结束。
函数定义
这是我们实现函数的部分。
函数定义也称为函数实现。
函数定义由6个部分组成,其中三个部分位于函数标题下,而三个则位于函数主体下。
- 函数标题
返回类型
- 函数名称
- 参数列表
- 函数体
局部变量声明
- 函数陈述
- 返回值声明
函数标题
函数定义中的返回类型必须与函数声明中的返回类型匹配。
我们已经知道,返回类型告诉我们该函数返回的值的类型。
函数定义中的函数名称与函数声明部分中的函数名称相同。
函数定义中的参数列表由实际的参数名称组成,不必与函数声明中的参数名称匹配。
函数体
这是函数的主体。
我们可以在体内声明局部变量,该局部变量只能在函数内部访问。
然后,我们可以使用其他函数语句在函数内部执行某些任务。
最后,如果函数返回任何值,我们可以使用return语句。
因此,return语句是可选的。
在以下示例中,我们实现了我们在本教程前面声明的findArea()
函数。
float findArea(float length, float width) { //variable declaration float area; //function statement area = length * width; //return statement return area; }
函数调用
这是我们调用或者调用函数的部分。
要调用一个函数,我们写出函数的名称和括号,并在函数需要时传递参数列表。
在下面的示例中,我们调用findArea
函数并传递两个值。
findArea(10, 20);
用C编写程序以查找矩形的面积
在下面的代码中,我们使用函数将程序分为子程序。
/** * file: rectangle-area.c * date: 2011-11-02 * description: rectangle-area program */ #include <stdio.h> //function declaration float findArea(float length, float width); int main(void) { //variable float length, width, area; //input printf("Enter length: "); scanf("%f", &length); printf("Enter width: "); scanf("%f", &width); //function call area = findArea(length, width); //output printf("Area: %f\n", area); printf("End of code\n"); return 0; } //function definition float findArea(float length, float width) { //local variable float area; //function statement area = length * width; //return statement return area; }
Enter length: 10 Enter width: 20 Area: 200.000000 End of code