【C/C++】C++函数
1、rand函数
函数原型:int rand(void);
所需头文件:<cstdlib>
功能和返回值:求出并返回一个伪随机数
2、srand函数
void srand(unsigned int seed);
参数:seed产生随机数的种子
所需头文件:<cstdlib>
功能:为使rand()产生一序列伪随机整数而设置起始点。使用1作为seed参数,可以重新初化rand()。
3、含有可变参数的函数
两种方法:
如果所有的实参类型相同,可以传递一个名为initializer_list的标准库类型
如果实参的类型不同,可编写可变参数的模板(待学)
initializer_list:是一种标准库类型,用于表示某种特定类型的值得数组,该类型定义再同名得头文件中
int initializerSum(initializer_list<int> il) {int sum = 0;for (auto ptr = il.begin(); ptr != il.end(); ptr++) //类似于容器的操作{sum += *ptr;}return sum;
}
参数传入:int initializer_num = initializerSum({ 20,30,40,50,60 });
使用这种方法需要注意一下几点:
1. initializer_list在C++11中才被引入,这意味着在编译时可能需要加上这个选项 -std=c++11 才能成功编译。上述代码中的auto关键字也是C++11的一部分;
2. 参数必须放在一组‘{}’(大括号)内,编译器通过大括号来将这组参数转化为initializer_list.大括号的的一组实参与initializer_list形参对应;
3. 函数原型initializer_list与普通形参无异。这表明形参列表中可以包含其他类型参数且位置不限,以下函数原型是正确的:
4.元素必须具有相同类型!!!
4、内联函数
内联函数体内不能有循环语句和switch语句
内联函数得定义必须出现在内联函数第一次被调用之前
对内联函数不能进行异常接口声明
5、constexpr函数
在C++11中才被引入constexpr修饰的函数:在其所有参数都是constexpr时一定返回constexpr
函数体中必须有且仅有一条return语句。
例子:
constexpr int get_size() { return 20; }
constexpr int foo = get_size(); //正确:foo是一个常量表达式
6、带默认参数值的函数
可以预先设置默认的参数值,调用时如给出实参,则采用实参值,否则采用预先设置的默认参数值。
有默认参数的形参必须列在形参列表的最右,即默认参数值的右面不能有无默认值的参数;调用时实参与形参的结合次序是从左向右。
如果一个函数有原型声明,且原型声明在定义之前,则默认参数值应在函数原型声明中给出;如果只有函数的定义,或函数定义在前,则默认参数值可以函数定义中给出。
7、重载函数
重载函数的形参必须不同:个数不同或类型不同。
编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。
【C/C++】C++函数相关推荐
- 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法
数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...
- Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译
Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...
- C++ 笔记(34)— C++ exit 函数
当遇到 main 函数中的 return 语句时,C++ 程序将停止执行.但其他函数结束时,程序并不会停止.程序的控制将返回到函数调用之后的位置.然而,有时候会出现一些非常少见的情况,使得程序有必要在 ...
- C++ 笔记(30)— 友元函数与友元类
我们知道类的私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行.这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦. ...
- 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )
1. foreach 函数 foreach 函数定义如下: $(foreach <var>,<list>,<text>) 函数的功能是:把参数 <list&g ...
- 浅显易懂 Makefile 入门 (06)— 文件名操作函数(dir、notdir、suffix、basename、addsuffix、addperfix、join、wildcard)
编写 Makefile 的时候,很多情况下需要对文件名进行操作.例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等. 注意:下面的每个函数的参数字符串都会被当作或是一个系列的文件名来看待. 1 ...
- Go 学习笔记(65)— Go 中函数参数是传值还是传引用
Go 语言中,函数参数传递采用是值传递的方式.所谓"值传递",就是将实际参数在内存中的表示逐位拷贝到形式参数中.对于像整型.数组.结构体这类类型,它们的内存表示就是它们自身的数据内 ...
- Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法
函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...
- C++ 笔记(26)— 主函数 main(int argc, char *argv[]) 参数说明
带形参的 main 函数,如 int main( int argc, char* argv[], char **env ) 是 UNIX .Linux 以及 Mac OS 操作系统中 C/C++ 的 ...
- OpenCV 笔记(09)— 常用的数据结构和函数(Vec、Point、Scalar、Size、Rect、cvtColor)
1. Vec 对象类型 Vec 是一个主要用于数值向量的模板类.我们可以定义向量的类型和组件的数量: Vec<double, 19> myVector 我们还可以使用任何的预定义类型: t ...
最新文章
- 一篇非常好的transformer年度总结
- 第十七届第一场智能车竞速校内赛,比往年来的早一些
- tomcat 禁用access.log
- 分治:分治和动态规划的区别,二分检索递归和迭代方式实现
- 如何在Flutter(REST API)中进行API调用
- c语言如何查看内置函数,C中函数内部的函数
- 小程序通过web-view访问的vue页面中点击无法跳转到小程序相关问题
- 使用LINQ计算基本统计
- ITIL事件管理流程设计
- [计算机通信网络]用例题来学会手算子网地址和子网掩码
- 交换机和路由器的区别计算机网络,交换机和路由器的区别,教您交换机和路由器的区别...
- 解决SQL Server占用服务器内存过高问题
- ARM嵌入式开发板推荐
- 二、IAR for ARM中STM32项目创建及其启动文件分析
- python函数关键字参数传递_Python给函数传递不定关键字的参数
- Python:爬取上市公司公告-Wind-CSMAR
- 服务器文件路径的例子,完整SQL Server实例迁移案例
- 【测试基础】之03 CSS入门基础
- Pytorch 分布式DPP 基本概念
- js 日期加一年_?Day.js 2KB时间库 和Moment.js一样的API
热门文章
- ORB-SLAM 解读(五) 地图点投影进行特征匹配
- [Matlab]变量,变量名与字符串的互相转换
- linux c文件处理命令
- 数据科学高级分析 (Data science advanced analytics)
- eclipse实用编辑快捷键
- SQL Server 数据类型
- android核心基础(5)_Android)java虚拟机和Dalvik虚拟机的区别
- java se基础复习3
- Python编程:从入门到实践 - matplotlib篇 - plot scatter
- 简易高重用的jdbcutils工具封装实现类以及简易连接池实现