在本教程中,您将通过简单易懂的示例,学习关于 C 语言函数的所有知识。本教程将指导您如何定义函数以及调用函数的各种方法。
函数是 C 语言编程的基础和重要组成部分。对于大型程序,代码的编写和管理会变得复杂。此外,我们经常需要重复执行类似的任务,这些任务使用一套通用的指令。为了解决这个问题,引入了函数的概念。
由于以下几个合理的原因,函数在所有编程语言中都扮演着至关重要的角色:
A. 函数增强了代码的可读性。
B. 代码的可重用性是 C 语言中函数的重要成就。
C. 通过避免在多处重写相同的代码,减少了代码的冗余。
D. 函数使得调试变得容易,因为模块化使得错误更容易追踪。
E. 由于函数调用取代了重复的代码块,代码的规模和复杂性得以降低。
函数基本上有两种类型:
标准库函数指的是编译器预先编写好的一组代码,用于执行特定任务。这些是已经定义在头文件中的内置函数。例如,用于存储输入数据的scanf和用于显示内容的printf都是定义在头文件stdio.h中的标准库函数。通常,所有的输入输出操作,包括数学运算,都是由库函数实现的。而用户定义函数则是由程序员编写,并在程序执行过程中根据需要使用。
只有正确指定了以下三个重要方面,C 程序中的函数才算完整。它们是:
在 C 语言中,函数声明始终是一种更好的做法,因为它会向编译器提示程序稍后将使用一个函数。函数声明向编译器提供函数名称、函数使用的参数数量以及函数类型等信息。声明函数时需要考虑的一个重点是,它必须在全局范围内声明,也就是在 main() 函数之外。
函数声明可以被看作是向编译器发出的一个公告,即将来程序中会使用一个函数。因此,它没有函数体。
函数声明的语法是:
return_type function_name ( data_type parameter(s));
下面给出了 C 语言中函数定义的基本语法。
return_type function_name ( data_type arg(s))
{
//function body with C statements
}
上述函数定义的各个组成部分如下表所示。
| 组成部分 | 描述 |
|---|---|
| return_type | 定义要返回的值的数据类型(int、float、char)。可选。 |
| function_name | 应该是一个有效的标识符。(参考标识符规则) |
| Parameter(s) | 用于向函数传递输入值。可选。 |
| function _body> | 用大括号 {} 括起来的一组有效的 C 语句。 |
您必须在任何函数的函数体内编写代码来定义它。假设我们想创建一个简单的函数 'show',它的任务是打印 'hello'。在这种情况下,您可以自由地在程序中的任何位置定义 'show' 函数,如下所示:
void show()
{
printf("hello");
}
对于处理变量的函数,定义如下:
float area(int r)
{
pi=3.14;
a = pi*r*r;
return(a);
}
在这个例子中,我们定义了一个计算圆面积的函数。这个函数只是一个脚本,在没有函数调用的情况下不会执行。因此,它被称为函数定义。
与函数定义一样,函数调用是函数的另一个重要方面。在正确定义函数之后,我们需要调用它来完成其设计的工作。为此,我们只需写下函数名和 (),后跟一个分号。语法如下:
function_name(arg(s));
在 C 语言中,我们可以通过四种不同的方式进行函数调用,下面列出了这些方式及其简单示例。
观察下面的示例,了解如何通过这四种不同的方式计算圆的面积。
#include<stdio.h>
void area() {
float a, pi;
int r = 10;
pi = 3.14;
a = pi * r * r;
printf("Area of Circle is : %f\n", a);
}
int main() {
area();
}
输出
Area of Circle is : 314.000000
观察以上程序,您可以发现以下几点:
#include<stdio.h>
float area() {
float a, pi;
int r = 10;
pi = 3.14;
a = pi * r * r;
return (a);
}
int main() {
printf("Area of Circle is : %f\n", area());
}
输出
Area of Circle is : 314.000000
在这个程序中,您可以发现以下几点:
#include<stdio.h>
area(int r) {
float a, pi;
pi = 3.14;
a = pi * r * r;
printf("Area of Circle is : %f\n", a);
}
int main() {
area(10);
}
输出
Area of Circle is : 314.000000
在这个程序中,您可以发现与前一个程序的以下不同之处:
#include<stdio.h>
float area() {
float a, pi;
int r = 10;
pi = 3.14;
a = pi * r * r;
return (a);
}
int main() {
float arc;
arc = area();
printf("Area of Circle is : %f\n", arc);
}
输出
Area of Circle is : 314.000000
在上面的代码片段中,您可以发现以下几点:
让我们来学习函数的整体工作原理和执行顺序。
在 C 语言中,程序的执行从 main() 函数开始,函数调用就位于其中。当编译器遇到一个函数调用时,控制权将转移到相应的函数定义处,执行为其设计的任务。当遇到 return 语句时,最终结果将返回到函数调用处。如果没有 return 语句,它会在函数内部输出结果,然后立即终止函数,将控制权交还给 main() 函数。
C 语言中的 return 语句通过终止其对应函数的执行,将一个值返回给调用函数。要返回值,我们必须用任何有效的数据类型声明函数,否则可以将其声明为 void。在我们之前的例子中,**a** 的值被返回到 main 函数并赋给变量 **arc**,如下图所示。