C++2:函数与传递
C++2:函数与传递
| 赵强 | 201831061427 |
|---|
目录
一.函数
二.函数重载
三.值传递
四.地址传递
五.递归函数
一.函数
我们在代码编译中常常会用到函数,函数是模块划分的基本单位,它能帮助我们将全部的代码划分为一小块、一小块的函数,不仅方便我们开发人员的阅读,也能方便后续的测试与修改、维护。函数的使用让程序的可读性、可维护性更强。同时函数可以被反复调用,也提高了模块的可复用性。
想一想如果一天你要维护一个一万行的代码,你打开发现全写在main函数里,你可能第一件事是找到编写者狠狠的打一顿,过长的代码对于开发者的记忆、逻辑顺序都是很大的挑战,正如同我们的书籍,有着分章分节,如果你得到一本没有章节的书,所有字都连在一起,你在阅读与背诵的过程中,应该就能够体会到使用函数的重要性了。
二.函数重载
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。重载函数可以方便开发人员在代码过长,难以找到调用函数时,自动匹配对应参数的函数使用。
例如:
结果是:
三.值传递
值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
四.地址传递
就是当调用一个过程时,是把实参变量的内存地址传递给被调用过程的形参,也就是说形参与实参使用相同地址的内存单元。因此当在被调用过程中改变形参的值,就等于改变了实参的值。
例如
void fun(int *x){
*x += 5; //修改的是指针x指向的内存单元值
}
void main(void){
int y = 0;
fun(&y);
cout<<\"y = \"<<y<<endl; //y = 5;
}
五.递归函数
一个函数在他的函数体内调用他自身称为递归调用,执行递归函数将反复调用其自身,每执行一次进入新的一层。为防止递归函数无休止的进行,必须在函数内有终止条件。对于一个函数只要知道他的递归定义式和边界条件,就可以编递归函数。
例如:
int jiecheng(int n)
{
if(n==1) //当n等于1时,直接返回。
return 1;
else //否则,返回n*jiecheng(n-1)
return n*jiecheng(n-1);
}
C++2:函数与传递的更多相关文章
- 将对象的所有属性名放到一个数组中 || 获得对象的所有属性名 || return;不具有原子性 || 怎样自己制作异常|| 判断对象有没有某个属性 || 当传递的参数比需要的参数少的时候,没有的值会被赋予undefined || 获得函数实际传递的参数 || 怎么用函数处理一个对象 || 用一个名字空间定义一个模块所有的函数 || 给一个对象添加方法
获得对象的所有属性名 || 将对象o的所有属性名放到数组中 var o = {x:1,y:2,z:3}; var arr = []; var i = 0; for(arr[i++] in o){};/ ...
- 从cocos2dx中寻找函数指针传递的方法
目的 看到群里有个朋友搞了好几天函数指针传递,没搞好.所以写一篇文章,旨在从cocos2dx中帮朋友们找到如何传递指针. 旧版本的函数指针传递 全局函数函数指针调用 一般在C++11之前,我们一般是这 ...
- linux中probe函数中传递的参数来源(上)
点击打开链接 上一篇中,我们追踪了probe函数在何时调用,知道了满足什么条件会调用probe函数,但probe函数中传递的参数我们并不知道在何时定义,到底是谁定义的,反正不是我们在驱动中定义的(当然 ...
- JavaScript学习总结(三、函数声明和表达式、this、闭包和引用、arguments对象、函数间传递参数)
一.函数声明和表达式 函数声明: function test() {}; test(); //运行正常 function test() {}; 函数表达式: var test = functio ...
- c#中数组array和list在函数间传递 转置
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- JS多个函数之间传递参数问题
JS多个函数之间传递参数的一个重要思想是在页面定义一个隐藏域,当第一个函数请求到数据时候修改隐藏域的值,第二个函数用jQuery的选择器选择页面中隐藏域的值. 比如: 页面中定义一个隐藏的页号. &l ...
- c语言学习笔记 函数数组传递笔记
今天学习c语言的一个小例子,果然还是陷入了php的编程习惯里,这里记录一下. #include <stdio.h> //例子很简单,就是编写一个函数把传递进来的数组里的值都赋值为1而已 / ...
- 巧用javascript对象属性,向事件绑定的匿名函数内传递循环控制变量的值
遇到一个需要向匿名函数传递循环控制变量的问题,我受到园子里这篇文章的启发[笔记]js获取当前点击元素的索引,解决了这个问题.现在把代码贴出来,以防止自己忘记. if ($('#labModal').l ...
- c语言 函数传输传递的三种方式(值、指针、引用)
本文摘自<彻底搞定c指针> 一.三道考题开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行……唉呀,谁扔我鸡蛋?)考题一,程序代码如下:void Exchg1(int x, in ...
随机推荐
- TZ_11_Spring-Boot的入门
1.SpringBoot的特点 为基于Spring的开发提供更快的入门体验 开箱即用,没有代码生成,也无需XML配置.同时也可以修改默认值来满足特定的需求 提供了一些大型项目中常见的非功能性特性,如嵌 ...
- table使用display:block时会多出一条边框
在静态页面中添加一个table,然后设置table的显示隐藏,当使用display:block显示table时出现了如下情况,详情请点击链接: http://jsbin.com/pinovorahu/ ...
- SpringBoot+Shiro+mybatis整合实战
SpringBoot+Shiro+mybatis整合 1. 使用Springboot版本2.0.4 与shiro的版本 引入springboot和shiro依赖 <?xml version=&q ...
- 在C#应用中使用Common Logging日志接口
我在C#应用中一般使用log4net来记录日志,但如果项目中有个多个工程,那么没有工程都需要引用log4neg,感觉很不爽.不过今日在开spring.net的时候,看到了有个通用日志接口Common ...
- A Simple Problem with Integers POJ - 3468 (线段树)
思路:线段树,区间更新,区间查找 #include<iostream> #include<vector> #include<string> #include< ...
- MacBook下为要运行的.net core 项目指定sdk版本
安装完.net core 3.0,运行早期版本构建的项目遇到运行错误,查阅官方文档解决问题,特此记录!官方原文如下: SDK 使用最新安装的版本 SDK 命令包括 dotnet new 和 dotne ...
- day36 08-Hibernate抓取策略:批量抓取
package cn.itcast.test; import java.util.List; import org.hibernate.Hibernate; import org.hibernate. ...
- linux查看现在在运行的进程 $ pstree -a$ ps aux
这都是查看现有进程的. ps aux 的结果比较杂乱 pstree -a 的结果比较简单明了,可以看到正在运行的进程及相关用户.
- 使用pip安装pymysql
本人使用的python版本是3.6,该版本是自带有pip.可以直接通过pip工具进行安装pymysql: 第一步:找到pip.exe路径. 例如我安装的目录如下,自带的pip工具的python版本,在 ...
- arcgis图层控制
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...


