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 ...
随机推荐
- hdu1881 毕业bg(深搜索dfs)
主题链接:pid=1881">http://acm.hdu.edu.cn/showproblem.php? pid=1881 ----------------------------- ...
- Tomcat剖析(四):Tomcat默认连接器(2)
Tomcat剖析(四):Tomcat默认连接器(2) 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三): ...
- UITabBarControler解决旋转问题
在遇到开发项目中播放视频,播放视频回列表后,,列表 NavigationController 里边, NavigationController 在 UItabBarController 里边,不要旋转 ...
- 走进windows编程的世界-----windows进程
Windows进程 1 Windows进程 进程是一个容器,包括了一个应用程序实例的各种资源.Windows多任务的操作系统,因此能够同一时候运行多个进程. 2 Windows进程的 ...
- 高性能双端js模板
高性能双端js模板(新增filter)---simplite simplite是一款js实现的模板引擎,它能够完成浏览器端js模版和node服务器端js模板的数据渲染. 渲染性能十分突出. 支持浏览器 ...
- datatables表格
datatables表格 并不是所有的后台开发都有美工和前端工程师来配合做页面,为了显示数据并有一定的美感,jQuery的DataTables插件对于像我这样的前端菜鸟来说真是雪中送炭,当然对于专业的 ...
- C++ Primer 学习笔记_63_重载运算符和转换 --转换和类类型【上】
重载运算符和转换 --转换与类类型[上] 引言: 在前面我们提到过:能够用一个实參调用的位 unsignedchar 相同范围的值,即:0到255. 这个类能够捕获下溢和上溢错误,因此使用起来比内置u ...
- ASP.NET 5应用是如何运行的(3)
ASP.NET 5应用是如何运行的(3) 设置自定义的入口程序体现应用本身与应用托管之间的分离,它使我们可以创建独立于托管环境的应用,并根据需要寄宿于任何一个我们希望的宿主程序下,对于Web应用来说这 ...
- 亮点面试题&&实现Singleton(辛格尔顿)模式-JAVA版本
称号:设计一个类.我们只能产生这个类的一个实例.(来自<剑指Offer>) 解析:仅仅能生产一个实例的类是实现Singleton(单例)模式的类型.因为设计模式在面向对象程序设计中起着举足 ...
- 项目笔记---CSharp图片处理
原文:项目笔记---CSharp图片处理 项目笔记---CSharp图片处理 最近由于项目上需要对图片进行二值化处理,就学习了相关的图片处理上的知识,从开始的二值化的意义到动态阀值检测二值化等等,并用 ...