您的位置:首页 > 编程语言 > C语言/C++

C++学习笔记十一之内联函数

2017-07-11 16:43 295 查看
内联函数是c++为提高程序运行速度所做的一项改进。常规函数和内联函数之间的主要区别不在于编写方式,而在于c++编译器如何将它们组合到程序中。

【常规函数和内联函数的不同工作方式】

常规函数:

编译过程的最终产品是由一组机器语言指令组成的的可执行程序。运行程序时,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定的内存地址。常规函数调用时,会使程序跳到另一个地址,函数运行完之后再跳回来。下面是具体实现:当执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数代码,然后跳回到地址被保存的指令处。来回跳跃并记录跳跃位置意味着以前使用函数时,需要一定的开销。

内联函数:

对于内联函数,程序无需跳到另一个位置处执行代码,再跳回来(这里编译器将使用相应的函数代码替换函数调用,也就是副本)。因此,内联函数的运行速度比常规函数要快一点,但需要占用更多内存,毕竟有副本。如果要调用10次,就得有10个副本。

【在什么情况下使用内联函数】

内联函数一般是程序频繁调用,并且内联函数内部代码行数不能过多,一般低于10行。因为如果内联函数内部代码行数过多,那么调用那部分节省的时间就没有多大意义了。

【使用内联函数】

1、在函数声明前面加上关键字inline;

inline int love(int a,int b);

2、在函数定义前面加上关键字inline;

inline int love(int a,int b)

{

return a*b;

}

内联函数就是函数前面多了一个关键字inline,其它的没什么不同的,内联函数跟常规函数一样,都是按值传递。

【演示代码】

#include <iostream>
#include <stdlib.h>

inline double square(double x)
{
return x*x;
}

int main()
{
using namespace std;
double a, b;
double c=13.0;

a = square(5.0);
b = square(4.5+7.5);
cout << "a = "<<a<<", b = "<<b<<"\n";
cout << "c = "<<c;
cout << ", c square = "<<square(c++)<<"\n";
cout << "Now c = "<<c<<"\n";
system("pause");
return 0;
}
【演示结果】




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: