📅  最后修改于: 2021-01-07 05:14:44             🧑  作者: Mango
用编程的术语来说,函数是执行特定任务的语句块。函数接受数据,对其进行处理并返回结果。编写函数主要是为了支持可重用性的概念。编写函数,就可以轻松调用它,而不必一次又一次地编写相同的代码。
不同的功能语言使用不同的语法编写函数。
在编写函数之前,程序员必须了解以下几点:
函数的用途应为程序员所了解。
函数的算法应为程序员所了解。
程序员应该知道函数数据变量及其目标。
用户调用的函数应该知道函数的数据。
当“调用”函数,程序“转移”控制权以执行该函数,其“控制流程”如下-
程序到达包含“函数调用”的语句。
函数内部的第一行被执行。
函数内部的所有语句都是从上到下执行的。
成功执行该函数,控件将返回到它从其开始的语句。
由函数计算和返回的任何数据都将在原始代码行中代替该函数使用。
函数的一般语法如下-
returnType functionName(type1 argument1, type2 argument2, . . . ) {
// function body
}
让我们举一个例子来了解如何在C++中定义函数,C++是一种面向对象的编程语言。下面的代码具有如下函数:将两个数相加,并提供其作为输出结果。
#include
int addNum(int a, int b); // function prototype
int main() {
int sum;
sum = addNum(5,6); // function call
printf("sum = %d",sum);
return 0;
}
int addNum (int a,int b) { // function definition
int result;
result = a + b;
return result; // return statement
}
它将产生以下输出-
Sum = 11
让我们看看如何在Erlang中定义相同的函数,Erlang是一种功能编程语言。
-module(helloworld).
-export([add/2,start/0]).
add(A,B) ->
C = A + B,
io:fwrite("~w~n",[C]).
start() ->
add(5,6).
它将产生以下输出-
11
函数原型是包含返回类型,函数名称和参数列表的函数声明。它类似于没有函数体的函数定义。
例如-一些编程语言支持函数原型,而有些则不。
在C++中,我们可以像这样使函数’sum’的函数原型-
int sum(int a, int b)
注意-诸如Python,Erlang等编程语言不支持函数原型,我们需要声明完整函数。
该函数的原型是由编译器使用时,函数被调用。编译器使用它来确保正确的返回类型,正确的参数列表被传入以及它们的返回类型正确。
函数签名类似于函数原型,在函数原型中,参数的数量,参数的数据类型和出现的顺序应相似。例如-
void Sum(int a, int b, int c); // function 1
void Sum(float a, float b, float c); // function 2
void Sum(float a, float b, float c); // function 3
Function1和Function2具有不同的签名。 Function2和Function3具有相同的签名。
注意-我们将在后续章节中讨论的函数重载和函数重写基于函数签名的概念。
当一个类具有名称相同但签名不同的多个函数时,函数重载是可能的。
当派生类函数的名称和签名与其基类相同时,可以覆盖函数。