清华大学C++课程学习笔记——第三章函数

函数

表现功能模块的单位形式,有利于代码重用、功能分解

(一)函数调用

1.背景

问:为什么能回到调用点的位置
答:用栈来保存了当前现场和返回地址

2.嵌套调用

解释:调用函数中还有调用函数
eg:求两个数的平方和

3.递归调用

解释:自己调用自己

(二)函数的参数传递

1.参数分类:

参数名称 参数特点
形参 不占用内存空间;被实参赋值后占用内存空间
实参 常量、变量、表达式;必须与形参的类型相符

2.传递分类

传递名称
单向传递 值传递,函数内只修改形参,不修改本身的值
双向传递 引用传递,可以减少参数传递、同时修改实参,有时需要考虑函数的引用数据的安全性

引用(&)是标识符的别名,定义引用时,必须同时对它进行初始化,使它指向一个已经存在的对象。
eg:两个数据进行交换

(三)特殊函数

1.可变参数的函数

(1)如果所有实参类型相同,可以传递initializer_list的标准库类型(表示某种特定类型值的数组)
对象中的元素永远是常量值,含有intializer_list形参的函数也可以同时拥有其他形参
(2)如果实参类型不同,我们可以辨析参数模板(第9章)

2.带默认参数值的函数

给形参赋上默认的值,给出实参采用实参,否则采用预先设置的默认值。
(1)you 默认值的形参必须列在形参列表的最右边
(2)调用时形参与实参的结合次序是从左向右
【牛客网:哪种声明是正确的】

3.内联函数:

解释:调用简单函数提高运行效率,看起来像函数又不希望完整的走一遍函数调用的过程。
关键字:inline
(1)内联函数体内不能有循环语句和switch语句
(2)内联函数的定义必须出现在内联函数第一次被调用之前
(3)对内联函数不能进行异常接口声明(第十二章)

4.函数重载

解释:C++中函数多态性的重要体现,允许功能相近的函数在相同的作用域内以相同函数名声明
(1)形参类型的不同
(2)形参个数不同
(3)返回值可以相同也可以不同
【牛客网:哪种重载函数是正确的】

5.C++系统函数

解释:C++中已经编写好的程序,使用前需要包含头文件。

4.constexpr函数

常量表达式函数,用来初始化常量。

你可能感兴趣的:(C++,c++,开发语言,后端)