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)函数模板可以像一般函数那样直接使用,函数模板在使用时,编译器根据函数的参数类型来实例化类型参数,生成具体的模板函数。
递归调用
一个函数直接或间接的调用自己,这种函数调用方式成为递归调用。分为直接递归和间接递归。递归函数的执行分为“递推”和“回归”两个过程,这两个过程由递归终止条件控制,即逐层递推,直至递归终止条件,然后逐层回归。所以递归函数中必须要有终止条件,否则程序将崩溃。
C++函数的应用的更多相关文章
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- C++对C的函数拓展
一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- javascript中的this与函数讲解
前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...
- 复杂的 Hash 函数组合有意义吗?
很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...
- JS核心系列:浅谈函数的作用域
一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...
- C++中的时间函数
C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...
- Python高手之路【四】python函数装饰器
def outer(func): def inner(): print('hello') print('hello') print('hello') r = func() print('end') p ...
随机推荐
- ROS模拟
亲测,在古月大大这篇博客中的一条命令最好改为rostopic pub /cmd_vel geometry/Twist -r 10 -- '[0.2,0,0]' '[0,0,0.5]'. http:// ...
- 页面tr和td的的隐藏与显示
<view:qrytr attributes="class=zcrzs"> </view:qrytr> var bd11 = $("tr[ ...
- Java主流锁
Java主流锁相关知识点概图,为方便预览,将思维导图上传至印象笔记,博客园直接上传图片受限于图片大小. 印象笔记url:https://app.yinxiang.com/shard/s24/nl/27 ...
- T-MAX——项目需求分析
这个作业属于哪个课程 2019秋福大软件工程实践Z班 这个作业要求在哪里 团队作业第二次-需求规格说明书 团队名称 T-MAX 这个作业的目标 撰写项目需求规格说明书,介绍团队分工 作业正文 T-MA ...
- Flutter移动电商实战 --(43)详细页_补充首页跳转到详细页
首页轮播点击到详细页 修改我们轮播这里的代码:SwiperDiy这个类这里的代码 return InkWell( onTap: (){ Application.router.navigateTo(co ...
- 小程序checkbox调整大小
.cb{ transform: scale(0.6,0.6); } <view> <label class="lab" for="box1"& ...
- php - ftp 上传文件到远程服务器
ccentos7服务器 ======================== 一.安装vsftpd及ftp命令 yum install vsftpd -y yum install ftp -y 二.vsf ...
- 二维背包---P1509 找啊找啊找GF
P1509 找啊找啊找GF 题解 很明显这是一道二维背包题目 如果一个dp数组做不了,那么我们就再来一个dp数组 题目要求,花费不超过 m ,消耗人品不超过 r ,泡到尽量多的妹子,时间尽量少 f ...
- osg fbx 绘制坐标轴、控制模型影藏与显示
int main() { osg::ref_ptr<osgViewer::Viewer> viewer1 = new osgViewer::Viewer; osg::ref_ptr< ...
- svn add 命令 递归目录下所有文件
svn add 命令 递归目录下所有文件 摘自:https://blog.csdn.net/yefl007/article/details/46506281 即使被忽略了也可以使用此命令. svn a ...