读书笔记:《C++大学教程》第六章:函数和递归入门(1)

《C++大学教程》第六章:函数和递归入门

1.重要概念

1.1.函数模块化程序有以下几个原因

一是“分而治之”法的使用
二是软件复用
三是避免重复代码
四是把程序分解成有意义的函数也使其更容易调试和维护

1.2.全局函数

像main函数之类的不属于任何类对象函数的函数,他的原型放在头文件中

1.3.数据升级和转换

float -->int 结果可能不正确,应当避免
int --> float 正确,隐式转换
函数调用时实参的类型和个数应当与形参匹配。如果调用时形参个数相同但是实参不能隐式转换成期望类型会发生错误。

2.实例:随机数

2.1.代码详解(两种方式)
#include<cstdlib> //头文件
//方法一
tmp = rand() % 6 + 1;  //产生伪随机数,每次运行结果一样
//方法二
srand(static_cast<unsigned int>time(0));//产生随时间变化的种子,传递给rand()
tmp = rand() % 6 + 1;  //由于种子是变化的,所以每次运行结果不一样
2.2.补充知识:枚举类型
//基础形式
enum status {a, b, c}; 
cout << a;//使用时
//作用域限定
enum class status{a, b, c}; 
cout << status::a;//使用时
//指定数据类型
enum class status : unsigned int{a, b, c}; //默认int
2.3.C++11的随机数
#include<random>
default_random_engine engine(static_cast<unsigned int>(time(0))); //随机数生成引擎,()内为构造函数实参。
uniform_int_distribution<unsigned int> randomInt(1,6);//<>类模板,(1,6)范围。
cout << random(engine); //使用

3存储

3.1.标识符可以作为变量名和函数,还包含以下属性

存储类别,作用域,链接

3.2.存储类别标识符

auto:默认标识符
register:寄存器优化,存储在寄存器中
extern
static
mutable

3.3.作用域

语句块作用域
函数作用域:标签start:或者switch语句中的case。
全局命名空间作用域
函数原型作用域

4函数调用堆栈的活动记录

4.1.堆栈的含义

后进先出的数据结构

4.2.实例

操作系统调用main函数,就会把一条活动记录压到堆栈上,这条操作记录告诉我们如何返回操作系统,并且包含main函数的自动变量空间(会丢弃)

5内联函数

5.1意义

减少函数调用的开销,占用内存大,比宏灵活,可替代宏。

5.2.代码
//函数声明必须和函数体一起
inline test(int x)
{
	return x*x; 
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生活在别处u

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值