C++函数的应用

函数的相关语法

  函数的一般定义形式如下:

    返回类型 函数名([参数表])   //函数头

    {                                                 //函数体

      语句块

      

    }

  注意:

  (1)一个C++程序必须由一个主函数和若干个子函数(可能是零个)构成。程序的运行,总是开始于主函数,也结束于主函数。

  (2)参数表:每一个参数必须声明自己的类型。函数可以由一个或多个参数变量,也可以没有参数。如果没有参数,称为“无参”函数,无参函数的参数表中可写有void ,也可以省略不写。

  (3)函数可以有返回值,也可以没有返回值。对于没有返回值的函数,功能只是完成一定操作,应将返回值类型定义为void ,函数体内可以没有return 语句,当需要在程序指定位置退出时,可以在该处放置一个return。

  函数调用    一般格式为:函数名(实参表);

  几点说明:

  (1)如果调用无参函数,则实参表为空,但函数名后的括号不能省略。

  (2)实参和形参的个数和排列顺序一一对应,并且对应参数的类型应该匹配。

  (3)C++不能嵌套定义函数,但可以嵌套调用函数。

  函数声明:

    函数声明与定义中的函数头相同,即:返回类型   函数名([参数表]);(因为是一条独立的语句,尾部需加分号)该处的参数表可只写类型,而省略参数名字。如:int sum(int,int);

参数传递

  函数的参数传递指的是形参与实参结合的过程。在C++中有两种参数传递方式,值传递和引用传递。

  (1)值传递:将实参的值复制给形参,在函数中参加运算的的是形参,而实参不会发生任何改变。传值调用起了一种隔离作用。

  (2)引用传递:在这种方式中,形参和实参对应同一块内存单元,对形参所作的任何改变会影响主函数的实参。

重载函数

  在C++中,如果需要定义几个功能相似,而参数类型或者参数个数不同的函数,那么这样的几个问题可以使用相同的函数名,这就是函数的重载。系统会根据实参与形参的个数或类型来进行匹配,自动确定该用哪个函数。

  注意:重载函数的参数必须不同,不同之处可以是参数的类型或参数的个数。

内联函数

  若函数声明为内联函数,则编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。

  需要注意以下几点:

  (1)内联函数体内一般不能有循环语句和switch语句。

  (2)在内联函数第一次被调用之前,这个函数一定要在有声明或已定义为inline。

  (3)inline函数内的代码应很短小,一般不超过5行。

函数模板

  函数模板声明格式:

  template <class 类型参数>

  返回类型 函数名(参数表)

  { 函数体 }

  几点说明:

  (1)函数模板定义由模板说明和函数定义组成;

  (2)关键字“class”用来指定类型参数,也可以使用typename来指定。

  (3)模板说明的类型参数必须在函数定义中至少出现一次。

  (4)函数模板可以像一般函数那样直接使用,函数模板在使用时,编译器根据函数的参数类型来实例化类型参数,生成具体的模板函数。

递归调用

  一个函数直接或间接的调用自己,这种函数调用方式成为递归调用。分为直接递归和间接递归。递归函数的执行分为“递推”和“回归”两个过程,这两个过程由递归终止条件控制,即逐层递推,直至递归终止条件,然后逐层回归。所以递归函数中必须要有终止条件,否则程序将崩溃。

  

原文地址:https://www.cnblogs.com/wjq13752525588/p/11726836.html