C/C++基础知识总结——函数
1. 随机函数的使用
1.1 头文件: # include <cstdlib> 或 # include <stdlib.h>
1.2 用法
srand(int seed);//伪随机,传随机种子
int d = 1 + rand()%6;//生成1-6随机数
2. 函数的参数传递
2.1 函数未被调用时,函数的形参不占有内存空间,也没有实际的值。只有在函数被调用时才为形参分配存储单元,并将形参与实参结合
2.2 值传递
(1) 值传递是发生函数调用时,为形参分配空间,并用实参来初始化形参。一旦形参获得值,与实参再无关系,不会影响到实参
2.3 引用传递
(1) 引用是一种特殊类型的变量,可以被认为是另一个变量的别名,内存空间是一样的
(2) 声明一个引用时,必须初始化,使他指向一个已经存在的对象
int i;
int &r1 = i;
(3) 一旦一个引用被初始化后不能改为指向其他对象
(4) 应用可以作为形参,在调用函数时对形参进行初始化,这样形参就成为实参的一个别名,对形参的操作影响实参。
2.4 地址(指针)传递
3. 内联函数
3.1 对于一些功能简单,规模较小的函数,且经常重复使用的函数,可以设计为内联函数
3.2 内联函数不是在调用时发生转移而是在编译的时候将函数体嵌入在调用处
3.3 用法
(1) inline 类型说明符 函数名(形参)
{
语句;
}
3.4 与宏定义的区别
(1)内联函数和普通函数相比可以加快程序运行速度,因为不需要中断调用,在编译的时候可以直接镶嵌到目标代码中。宏只是一个简单的替换
(2)内联函数需要做类型检查,这是内联函数跟宏相比的优势
(3)inline是指嵌入代码,在调用函数的时候不是跳转,而是直接把代码写到那里去。对于短小代码来说,inline可以带来一定效率的提升,而且和宏相比, inline更安全。但是以消耗空间为代价的。宏是在代码处不加任何验证的简单替代,宏不是函数。inline是函数,但在编译中不产生代码,而是将有关代 码嵌入到调用处
(4)宏在C语言中非常重要,在C++中就没那么重要了。宏的第一条规则是:绝不应该使用它,除非必须这么做。几乎每个宏都表明了程序设计语言里、 程序里或者程序员的一个缺陷,因为它将在编译器看到程序正文之前重新摆布这些正文。
4. 带默认参数的形参
4.1 有默认值的形参必须在参数表最后,这个比较好理解
4.2 在相同的作用域里,不允许在同一个函数的多个声明中对同一个参数的默认值重复定义,即使前后定义的值相同也不行
int add(int x = 5; int y = 6);//声明时可以默认值,同作用域的其他声明不能有
int main()
{
add();
return 0;
}
int add(int x /* = 5 */, int y /* = 6 */) //定义时不能有默认值
{
//这里不能再出现默认形参,但为了清晰,可以通过注释来说明
return x +y;
}
C/C++基础知识总结——函数的更多相关文章
- php面试笔记(5)-php基础知识-自定义函数及内部函数考点
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...
- [C/C++基础知识] main函数的参数argc和argv
该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助.一.main()函数参数通常我们在写主函数时都是void ...
- swift 学习(二)基础知识 (函数,闭包,ARC,柯里化,反射)
函数 func x(a:Int, b:Int) {} func x(a:Int, b:Int) -> Void {} func x(a:Int, b:Int) ->(Int,Int ...
- 初学者入门web前端:C#基础知识:函数
入行前端对函数的掌握程度有可能直接影响以后工作的效率,使用函数可以高效的编写编码,节省时间,所以我整理了C#中最基础的函数知识点,虽然我在学习中 遇到很多问题,但是只要能够解决这些问题,都是好的. 一 ...
- JavaScript基础知识(函数)
函数的基础 函数: 把实现相同功能的代码放到一个函数体中,当想实现这个功能时,直接执行这个函数即可:减少了的冗余:高内聚,低耦合--> 函数的封装: 函数:引用数据类型: var a = 10; ...
- PHP基础知识之函数
定义: <?phpclass foo-----定义类{ function do_foo()---类的方法 { echo "Doing foo."; ...
- php基础知识和函数
<?php /* echo "hello","aaaa"; //输出语法,可以输出多个字符串 print "world"; //可以输 ...
- php基础知识【函数】(1)数组array
一.排序 1.sort -- 从最低到最高排序,删除原有的键名,赋予新的键名[字母比数字高] 2.rsort -- 逆向排序(最高到最低),删除原有的键名,赋予新的键名[字母比数字高] 3.asort ...
- php基础知识【函数】(8)xml和变量函数
一.XML函数 参数类型 data --string,需要解析的数据集. parser --resource,一个指向要取得字节索引的 XML 解析器的引用. 1.创建和释放XMl解析器 ...
- php基础知识【函数】(7)url和ob函数
一.URl函数 1.urlencode -- 编码 URL 字符串 2.urldecode -- 解码已编码的 URL 字符串 3.rawurlencode -- 按照 RFC 1738 对 URL ...
随机推荐
- 从头开始学JavaScript (十一)——Object类型
原文:从头开始学JavaScript (十一)--Object类型 一.object类型 一个object就是一系列属性的集合,一个属性包含一个名字(属性名)和一个值(属性值). object对于在应 ...
- 随手记UIKit Dynamics
以今年的优势WWDC品行,我记得一些明年的元素.一些博客上找到了新的功能没有被记录.认为iOS 8全力以赴.iOS 7该属性不随手记录为时已晚 :) 参考WWDC 2013的Session Video ...
- 读取上传的CSV为DataTable
csv导入文件会把每列的数据用英文逗号分割开来,如果遇到某列中包含英文逗号,则会把该列用英文双引号进行包装. 如果csv文件中某列的数据本身包含英文逗号,应该使用读取字符串的方式进行解析数据,如csv ...
- 前端学习笔记(zepto或jquery)——对li标签的相关操作(一)
对li标签的相关操作——点击li标签进行样式切换的两种方式 Demo演示: 1 2 3 4 // 详解: 第一种方式(以ul为基础): $("ul").bind("cli ...
- tomcat的webapps文件夹下放更新后的项目就訪问不了
昨天给同事更新完程序,同事说更新后的程序訪问不了.它曾经的程序叫tj52,更新后的程序叫webapp.也就是tomcat的文件夹有两个文件架,一个叫webapp,一个叫tj52.最后另外一同事给了解决 ...
- SOD框架的数据容器,打造最适合DDD的ORM框架
SOD框架的数据容器,打造最适合DDD的ORM框架 引言:DDD的困惑 最近,我看到园子里面有位朋友的一篇博客 <领域驱动设计系列(一):为何要领域驱动设计? >文章中有下面一段话,对DD ...
- WCF常见问题(1) -- WebService/WCF Session Cookie
原文:WCF常见问题(1) -- WebService/WCF Session Cookie 在.net 3.0推出WCF之前使用的WebService,有的应用有使用Session保持一些信息,在不 ...
- CentOS 使用yum命令安装Java SDK(openjdk)
CentOS 6.X 和 5.X 自带有OpenJDK runtime environment (openjdk).它是一个在linux上实现开源的java 平台.CentOS yum 命令 安装 ...
- Java对象比较器对泛型List进行排序-Demo
针对形如:字段1 字段2 字段3 字段n 1 hello 26 7891 world 89 5562 what 55 4562 the 85 452 fuck 55 995 haha 98 455 以 ...
- JS判断字符串是否全为中文
//第一种代码(全为中文则返回"true",不全为中文则返回"false"): <script language="javascript&quo ...