在本文中,您将学习有关C ++中函数的所有知识。有哪些类型的函数,如何在示例中使用它们。
在编程中,函数是指将代码分组以执行特定任务的代码块。
取决于函数是预定义的还是由程序员创建的;函数有两种类型:
标准库函数
用户定义函数
库函数是C ++编程中的内置函数。
程序员可以通过直接调用函数来使用库函数;他们不需要自己编写。
#include <iostream> #include <cmath> using namespace std; int main() { double number, squareRoot; cout << "输入一个数字: "; cin >> number; // sqrt()是一个用于计算平方根的库函数 squareRoot = sqrt(number); cout << "数字 " << number << " 的平方根= " << squareRoot; return 0; }
输出结果
输入一个数字: 26 数字 26 的平方根 = 5.09902
在上面的示例中,调用sqrt()库函数来计算数字26的平方根。
上述程序中的注意代码#include <cmath>。 在这里cmath是头文件。sqrt()函数定义在cmath头文件中。
当您使用#include <cmath>将文件cmath的内容包含到这个程序中时,您可以使用cmath中定义的所有函数。
每个有效的C ++程序至少具有一个函数,即main()函数。
C ++允许程序员定义自己的函数。
用户定义的函数将执行特定任务的代码分组,并为该组代码指定名称(标识符)。
从程序的任何部分调用该函数时,它们都将执行函数主体中定义的代码。
根据上图。
当程序开始运行时,系统将调用main()函数,即程序开始运行时从main()函数执行代码。
当程序的控制权到达main()内部的function_name()时,它将移至void function_name()并执行void function_name()内部的所有代码。
然后,程序的控制返回到主函数,在该函数中,如上图所示,执行了对function_name()的调用之后的代码。
C ++程序将两个整数相加。创建一个函数add()以添加整数并在main()函数中显示sum。
#include <iostream> using namespace std; // 函数原型(声明) int add(int, int); int main() { int num1, num2, sum; cout<<"输入两个要相加的数字: "; cin >> num1 >> num2; // 调用函数 sum = add(num1, num2); cout << "总和 = " << sum; return 0; } // 函数定义 int add(int a, int b) { int add; add = a + b; // 返回语句 return add; }
输出结果
输入两个要相加的数字: 8 -4 总和 = 4
如果在main()函数之后定义用户定义的函数,编译器将显示错误。这是因为编译器不知道用户定义的函数、传递给函数的参数类型和返回类型。
在C ++中,函数原型是函数的声明,而没有它的主体来提供有关用户定义函数的编译器信息。 上例中的函数原型为:
int add(int, int);
你可以看到,原型中没有函数体。而且,只有返回类型的参数,没有参数。您也可以像下面这样声明函数原型,但不需要编写参数。
int add(int a, int b);
注意:如果用户定义的函数在main()函数之前存在,则不必定义原型。
要执行功能主体的代码,需要调用(调用)用户定义的功能。
在上面的程序中,add(num1,num2);内部main()函数调用用户定义的函数。
该函数返回一个整数,该整数存储在variable中add。
函数本身称为函数定义。上面程序中的函数定义是:
// 函数定义 int add(int a,int b) { int add; add = a + b; return add; }
当函数被调用时,控制被转移到函数体的第一个语句。
然后,依次执行函数体中的其他语句。
当函数定义中的所有代码都被执行时,程序的控制移动到调用程序。
在编程中,参数(parameter)是指在调用函数时传递给函数(函数定义)的数据。
在上面的示例中,两个变量num1和num2在函数调用期间被传递给函数。这些参数称为实际参数。
num1和num2的值分别初始化为变量a和b。 这些参数a和b称为形式参数。
如下图所示:
关于传递参数的注意事项
实际参数和形式参数的数量应相同。(例外:函数重载)
第一个实际参数的类型应与第一个形式参数的类型匹配。同样,第二个实际参数的类型应该与第二个形式参数的类型匹配,依此类推。
您可以在不传递任何参数的情况下调用函数a。 传递给函数的参数数量取决于程序员如何解决问题。
您可以为参数指定默认值。这些参数称为默认参数。
在上面的程序中,两个参数都是int类型。但是没有必要同时使用两个相同类型的参数。
函数可以使用return语句将单个值返回到调用程序。
在上面的程序中,使用以下语句将add的值从用户定义函数返回到调用程序:
return add;
下图演示了return语句的工作。
在上面的程序中,将用户定义函数中的add值返回给调用函数。然后该值被存储到一个变量sum中。
注意返回的变量,即add是int类型,sum也是int类型。
另外,请注意,函数的返回类型是在函数声明符int add(int a, int b)中定义的,在add(int a, int b)之前的int表示函数应该返回一个int类型的值。
如果没有值返回到调用函数,则应使用void。