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 ...
随机推荐
- 3、Web server 之httpd2.2 配置说明
http协议实现的程序 静态(httpd, nginx, lighttpd) 动态 (IIS, tomcat, jetty, jboss, resin, websphere, weblogic ...
- FOI冬令营 Day1
目录 T1.全连(fc) 传送门 Code T2.原样输出(copy) 传送门 Code T3.不同的缩写(diff) 传送门 Code 打算把省冬的题目放上来,主要是防止自己偷懒不订正 T1. ...
- 关于SQLServer 中行列互转的实例说明
这几天在做一个招标系统中审批模块,其中关于报价信息这块,用到了pivot和unpivot来实现数据的行列互转,下面简单介绍一下,实际案例,便于回忆和记录相关的条件下使用的情况.pivot 与 unpi ...
- java大型互联网项目大流量高并发所需的技术
互联网一般运行技术:webservice,jquery,访问量,缓存,数据安全等,JAVA后台就比较多了,不过,像这种大型的互联网项目,基本框架都有了,你需要做的就是熟悉业务,熟悉他们公司所用的框架, ...
- Alpha冲刺(2/4)
队名:福大帮 组长博客链接:https://www.cnblogs.com/mhq-mhq/p/11885037.html 作业博客 :https://edu.cnblogs.com/campus/f ...
- legend3---20、加东西之前要保证没有,删东西之前要保证有,无论前端后端
legend3---20.加东西之前要保证没有,删东西之前要保证有,无论前端后端 一.总结 一句话总结: 加东西之前要保证没有,删东西之前要保证有,无论前端后端 这是很好的编程习惯,可以避免很多错误, ...
- sklearn中的弹性网函数 ElasticNet
语法: ElasticNet(self, alpha=1.0, l1_ratio=0.5, fit_intercept=True, normalize=False, precompute=False ...
- Hallelujah Leonard Cohen
Hallelujah 歌词 Leonard Cohen Now I've heard there was a secret chord 我听说有一个隐秘的弦音 That David ...
- oneway modifier MQ 发送请求不接受任何响应
Apache Thrift - Home http://thrift.apache.org/ /** * This method has a oneway modifier. That means t ...
- PaddlePaddle实现线性回归
在本次实验中我们将使用PaddlePaddle来搭建一个简单的线性回归模型,并利用这一模型预测你的储蓄(在某地区)可以购买多大面积的房子.并且在学习模型搭建的过程中,了解到机器学习的若干重要概念,掌握 ...