目录
一、内联函数
作用:用来解决C语言中的宏函数不足
1.1 C语言中的宏和宏常量
宏:#define定义出来的内容,在预处理阶段将代码展开
宏常量:#define MAX_SIZE 100
优点:代码可读性高
缺点:缺少参数类型检查
1.2 C语言中的宏函数
宏函数:#define MAX(a,b) a>b ? a:b
优点:在预处理阶段替换宏函数减少了函数调用的参数压栈,开辟栈帧等操作,提高程序运行效率
缺点:不会进行类型检查
1.3 C++中的内联函数
宏常量:在C++中,被const修饰的常量替换(const在C++中扩展)
1)修饰的变成常量而不是常变量
2)具有宏替换的效果,在编译阶段会被替换(宏常量)
宏函数:被inline修饰的内联函数替换
在编译阶段编译器会用内联函数替换函数的调用,可以进行类型检查
注意:在debug模式下,内联函数默认不会展开
二、基于范围的for循环
2.1 auto关键字
2.1.1 定义:auto修饰的变量,具有自动储存器的局部变量
在定义一行中的多个变量时,这些变量必须是相同的类型,否则会报错,因为编译器实际只对第一个类型进行推到,然后根据推到的类型定义其他变量
2.1.2 使用:定义变量时必须初始化,auto并非一种类型的声明,而是一种类型的占位符,编译时编译器会替换auto为实际类型
auto不能作为函数返回值(参数)
void func(auto a) //判断不了a的类型
auto不能作为声明数组
auto b[]={4,5,6}
2.2 基于范围的for循环
2.2.1 for循环后的括号由冒号“ :”分为两部分
1)范围内用于迭代的变量
2)被迭代的范围
for(auto e:array) //在循环中,e是array数组中每个元素的拷贝
for(auto& e:array) //在循环中,e是array数值中每个元素的别名