📜  C++函数

📅  最后修改于: 2020-12-17 05:06:03             🧑  作者: Mango


函数是一起执行任务的一组语句。每个C++程序至少都有一个函数main() ,所有最简单的程序都可以定义其他函数。

您可以将代码分成单独的函数。如何在不同功能之间划分代码取决于您,但是从逻辑上来说,划分通常是使每个函数执行特定任务。

函数声明告诉编译器函数的名称,返回类型和参数。函数定义提供了函数的实际身体。

C++标准库提供了程序可以调用的许多内置函数。例如,函数strcat()连接两个字符串,函数memcpy()将一个内存位置复制到另一位置,还有更多函数。

已知具有各种名称的函数,例如方法,子例程或过程等。

定义功能

C++函数定义的一般形式如下-

return_type function_name( parameter list ) {
   body of the function
}

C++函数定义由函数头和函数体组成。这是函数的所有部分-

  • 返回类型-函数可以返回一个值。 return_type是函数返回的值的数据类型。某些函数执行所需的操作而不返回值。在这种情况下,return_type是关键字void

  • 功能名称-这是函数的实际名称。函数名称和参数列表共同构成函数签名。

  • 参数-参数就像一个占位符。调用函数,将一个值传递给参数。此值称为实际参数或自变量。参数列表是指类型,顺序和数量的函数的参数。参数是可选的;也就是说,一个函数可能不包含任何参数。

  • 函数体-函数体包含定义函数的语句的集合。

以下是名为max()的函数的源代码。此函数采用两个参数num1和num2并返回两者中的最大值-

// function returning the max between two numbers
 
int max(int num1, int num2) {
   // local variable declaration
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

功能声明

函数声明告诉编译器函数名称以及如何调用函数。该函数的实际主体可以单独定义。

函数声明包含以下部分-

return_type function_name( parameter list );

对于上面定义的函数max(),以下是函数声明-

int max(int num1, int num2);

参数名称在函数声明中并不重要,仅它们的类型是必需的,因此以下也是有效的声明-

int max(int, int);

在一个源文件中定义一个函数并在另一个文件中调用该函数,需要函数声明。在这种情况下,你应该在文件调用函数的顶部声明函数。

调用函数

创建C++函数,您需要定义函数。要使用一个函数,您将必须调用或调用该函数。

当程序调用函数,程序控制将转移到被调用函数。被调用函数执行已定义的任务,并在执行return语句或达到其函数结尾的右括号时,将程序控制权返回给主程序。

要调用一个函数,您只需要传递所需的参数以及函数名,如果函数返回一个值,则可以存储返回的值。例如-

#include 
using namespace std;
 
// function declaration
int max(int num1, int num2);
 
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   int ret;
 
   // calling a function to get max value.
   ret = max(a, b);
   cout << "Max value is : " << ret << endl;
 
   return 0;
}
 
// function returning the max between two numbers
int max(int num1, int num2) {
   // local variable declaration
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

我保留了max()函数和main()函数并编译了源代码。在运行最终可执行文件时,它将产生以下结果-

Max value is : 200

功能参数

如果函数要使用参数,则它必须声明接受参数值的变量。这些变量称为函数的形式参数

形式参数的行为类似于函数内部的其他局部变量,并在进入函数创建并在退出时销毁。

调用函数,可以通过两种方式将参数传递给函数-

Sr.No Call Type & Description
1 Call by Value

This method copies the actual value of an argument into the formal parameter of the function. In this case, changes made to the parameter inside the function have no effect on the argument.

2 Call by Pointer

This method copies the address of an argument into the formal parameter. Inside the function, the address is used to access the actual argument used in the call. This means that changes made to the parameter affect the argument.

3 Call by Reference

This method copies the reference of an argument into the formal parameter. Inside the function, the reference is used to access the actual argument used in the call. This means that changes made to the parameter affect the argument.

默认情况下,C++使用按值调用来传递参数。通常,这意味着函数中的代码无法更改用于调用该函数的参数,上面提到的示例在调用max()函数使用的是同一方法。

参数的默认值

定义函数,可以为每个最后一个参数指定默认值。如果在调用函数时将相应的参数留为空白,则将使用此值。

这是通过使用赋值运算符并为函数定义中的参数赋值来完成的。如果在调用函数时未传递该参数的值,则使用默认的给定值,但如果指定了值,则将忽略此默认值,而使用传递的值。考虑以下示例-

#include 
using namespace std;
 
int sum(int a, int b = 20) {
   int result;
   result = a + b;
  
   return (result);
}
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   int result;
 
   // calling a function to add the values.
   result = sum(a, b);
   cout << "Total value is :" << result << endl;

   // calling a function again as follows.
   result = sum(a);
   cout << "Total value is :" << result << endl;
 
   return 0;
}

编译并执行上述代码后,将产生以下结果-

Total value is :300
Total value is :120