函数的相关语法

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

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

    {                                                 //函数体

      语句块

      

    }

  注意:

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

递归调用

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

  

C++函数的应用的更多相关文章

  1. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  2. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  3. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  4. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  5. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  6. javascript中的this与函数讲解

    前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...

  7. 复杂的 Hash 函数组合有意义吗?

    很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...

  8. JS核心系列:浅谈函数的作用域

    一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...

  9. C++中的时间函数

    C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...

  10. Python高手之路【四】python函数装饰器

    def outer(func): def inner(): print('hello') print('hello') print('hello') r = func() print('end') p ...

随机推荐

  1. HttpClient学习(三)—— AsyncHttpClient使用

    一.介绍 This class support asynchronous and synchronous HTTP requests. AsyncHttpClient 支持同步.异步Http请求. 二 ...

  2. HearthBuddy模拟对手的回合

    start calculations, current time: 10:29:48 V2019.09.01.002 Rush 10000 face 27 berserk:1 ets 200 secr ...

  3. DMA详解

    1.DMA由来DMA(Direct Memory Access,直接存储器访问).在DMA出现之前,CPU与外设之间的数据传送方式有程序传送方式.中断传送方式.CPU是通过系统总线与其他部件连接并进行 ...

  4. python3.6+pycharm+robotframework 环境搭建

    参考文档:https://www.cnblogs.com/chenyuebai/p/8359577.html, https://www.cnblogs.com/jiyanjiao-702521/p/9 ...

  5. Python日志库logging总结-可能是目前为止将logging库总结的最好的一篇文章

    在部署项目时,不可能直接将所有的信息都输出到控制台中,我们可以将这些信息记录到日志文件中,这样不仅方便我们查看程序运行时的情况,也可以在项目出现故障时根据运行时产生的日志快速定位问题出现的位置. 1. ...

  6. 在Springmvc普通类@Autowired注入request为null解决方法

    在Springmvc普通类@Autowired注入request为null解决方法   在类中加入以下注入request对象的代码,运行时发现request为null,注入失败.在@Controlle ...

  7. [ML] Decision Tree & Ensembling Metholds

    热身:分类问题若干策略 SVM, LR, Decision Tree的比较 同样是分类:SVM.LR.决策树,三者之间有什么优劣势呢? 答:Are decision tree algorithms l ...

  8. 123457123457#0#-----com.yuming.ZuiNiuChengYu--前拼后广--最牛成语

    com.yuming.ZuiNiuChengYu--前拼后广--最牛成语

  9. (十九)oracle 基础使用以及sql语句基础

    oracle的安装与卸载 要记住数据库口令,适用于sys.system.sysman/dbsnmp等账户,而scott帐号密码默认为tiger, 以oracle  10g来说,scott账户默认是lo ...

  10. Mac 裁剪mp3

    系统自带的QuickTime Player