(一)内联函数
编译过程最终是由一组机器指令组成的,每条指令都有一个地址,随后计算机逐步执行这些指令。执行指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数代码,然后跳到地址被报讯的指令处。
内联函数便是将编译代码将其它代码内联起来,将相应的函数代码替换函数调用,对于内敛代码,程序无需跳到另一个位置执行代码,这样节约了时间,但是增加了内存。需要在函数声明前增加关键字inline
eg8.1:
#include <iostream>
inline double square (double x){return x*x;}
using namespace std;
int main(int argc, const char * argv[]) {
// insert code here...
double a,b;
double c=13.0;
a=square(5.0);
b=square(4.5+7.5);
cout<<"a="<<a<<",b="<<b<<endl;
cout<<"c="<<c<<endl;
cout<<",c square="<<square(c++)<<endl;
cout<<"c="<<c<<endl;
// std::cout << "Hello, World!\n";
return 0;
}
内联与宏:
内联函数也是按照值来传递参数的,但是宏不能按值传递参数
#define SQUARE(x)((x)*(x))
eg:#define SQUARE(c++);会将c递增两次。
(二)引用变量