C++拾遗(六)函数相关

返回值

C++规定返回值不能是 数组。但可以是其它任何类型(包括结构体和对象)。

通常,函数将返回值复制到指定的CPU寄存器或内存单元中,然后调用函数调用该内存单元的值。

函数原型

参数列表中可以不包括变量名,原型中的变量名相当于占位符,不需要与函数定义中一样。

在C++中,原型的()中为空意味着没有参数,(...)意味着原型不指定参数列表,在原型之后定义参数列表。

通常,原型自动将被传参数强制转换为期望类型,条件是两者都是算术类型。

函数参数

声明多个参数的时候不能像声明变量一样组合声明,如:float a, b; 做为变量声明是可行的;但是void function( float a, b)是不合法的,应为

void function( float a, float b)。

函数传递数组

1 void function( int * array, int length );

其中array是传入数组的第一个元素的地址,这样做有好处:节省复制整个数组的时间和内存。也有坏处:有破坏原始数据的风险。
另外,传递数组时,数组的长度需要单独传递,在function 中使用 sizeof(array) 获得的将是指针变量的长度。

为了防止对原数据的修改,可在参数前加上const关键字。

1 void function( const int * array, int length );

原始数据不一定是常量,但是对于function来说,原始数据是只读的常量。

时间: 2024-10-18 05:19:57

C++拾遗(六)函数相关的相关文章

计算机底层知识拾遗(六)理解页缓存page cache和地址空间address_space

在这篇计算机底层知识拾遗(五)理解块IO层 中讲了块缓存buffer cache块缓存,这篇说说页缓存page cache以及相关的地址空间address_space的要点. 在Linux 2.4内核中块缓存buffer cache和页缓存page cache是并存的,表现的现象是同一份文件的数据,可能即出现在buffer cache中,又出现在页缓存中,这样就造成了物理内存的浪费.Linux 2.6内核对两个cache进行了合并,统一使用页缓存在做缓存,只有极少数的情况下才使用到buffer

C++拾遗(六)——复制控制

年前忙了几天,到现在才算是有空休息下来.先祝大家新年快乐,心想事成:)我也会发笑脸o.o 这篇博文主要介绍定义一个类型的对象时的复制控制方式,这部分内容之前有一定的了解但又浅尝辄止,始终感觉没能找到要点.年前又拿起书细细品读,算是有了一点新的了解.几天前就想动笔了,一直没时间,拖到现在. 每种类型定义了创建该类型的对象时会发生什么——构造函数定义了该类类型对象的初始化.类型还能控制复制.赋值或撤销该类型的对象时会发生什么——类通过特殊的成员函数:复制构造函数.赋值操作符和析构函数来控制这些行为.

C++拾遗(七)函数相关(2)

内联函数 内联函数与常规函数的区别在于: 1.常规函数:在执行调用指令时,先存储该指令的内存地址,将函数参数复制到堆栈,然后跳转到被调用函数起点的内存单元,执行函数,将返回值放 入寄存器,最后跳回到一开始被保存的指令处. 2.内联函数:编译器将函数调用替换为函数代码,不需要跳转,但是内存开销大. PS:内联函数不能递归,内联函数的函数体不能过大.使用时在声明和定义的前面都要加上关键字 inline. 引用传值 当函数的参数为const引用时,编译器将在以下两种情况生成临时变量: 1.实参类型不匹

iOS流布局UICollectionView系列六——将布局从平面应用到空间

iOS流布局UICollectionView系列六--将布局从平面应用到空间 一.引言 前面,我们将布局由线性的瀑布流布局扩展到了圆环布局,这使我们使用UICollectionView的布局思路大大迈进了一步,这次,我们玩的更加炫一些,想办法将布局应用的空间,你是否还记得,在管理布局的item的具体属性的类UICollectionViewLayoutAttributrs类中,有transform3D这个属性,通过这个属性的设置,我们真的可以在空间的坐标系中进行布局设计.iOS系统的控件中,也并非

老男孩python第六期

01 python s6 day7 上节回顾02 python s6 day7 SNMP使用03 python s6 day7 大型监控架构讲解04 python s6 day7 Redis使用05 python s6 day7 定义监控文档结构06 python s6 day7 监控架构讲解07 python s6 day7 定义监控模板08 python s6 day7 自定义监控项09 python s6 day7 通过深copy实现各主机服务的自定义配置10 python s6 day7

(转载)虚幻引擎3--第六章 –函数

第六章 –函数 6.1概述 指南 6.1环境生物, 第一部分:基类声明 指南 6.2 环境生物, 第二部分:类的变量声明 指南 6.3 环境生物,第三部分:渲染及光照组件 指南 6.4 环境生物, 第四部分:碰撞及物理属性 6.2 函数声明 指南 6.5 环境生物, 第五部分: SETRANDDEST() 函数 6.3函数修饰符 Static Native Final Singular NoExport Exec Latent Iterator Simulated Server Client R

C++拾遗--多线程:多线程的引入

C++拾遗--多线程:多线程的引入 前言 多线程是编程中的一个重要内容.多核时代使多线程称为一种可能,显然,一件事情多个人干,效率一定会提升.下面来看下C语言中是如何使用多线程的. 正文 先来看一个实例 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <process.h> #include <Windows.h> DWORD WINAPI run

黄仲则《绮怀》十六首

楚楚腰肢  掌  上  轻,得人怜处    最分明. 千围步障  难藏艳,百合葳蕤不锁情. 朱鸟窗前眉欲语,紫姑乩畔目将成. 玉钩初放钗初堕,第一销魂是此声.  注: 1:绮怀:美丽情怀:风月情怀:浪漫情怀.绮,美丽的丝织品. 黄景仁客居寿州时,孤独无聊之际,回忆自己少年时期与表妹的初恋,写下这组诗,共十六首.他的表妹当时十五岁. 2:楚楚腰肢掌上轻:楚楚腰肢,<韩非子>:"楚灵王好细腰,而国中多饿人."楚楚,纤弱娇美. 掌上轻,〈〈飞燕外传〉〉载,赵飞燕,体轻,能为掌上舞

【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱

为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个菜比,弱爆了!),所以肯定会有很多问题(有些语句理解不透彻,翻译出来也不通顺,还请不吝赐教),也请各位园友多多指正,谢谢! 关于原文作者 原文作者:Shivprasad koirala 原文地址:http://www.codeproject.com/Articles/76153/Six-import