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

来源:互联网 发布:java org.apache下载 编辑:程序博客网 时间:2024/05/29 16:14

内联函数是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;}
【演示结果】




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 入户门正对阳台怎么办 客厅门对着窗户怎么办 卧室门对入户门怎么办 入户门对着厕所怎么办 一开门对厕所门怎么办 房子窗户对着路怎么办 电梯门对入户门怎么办 鞋柜对着入户门怎么办 入户门对着窗户怎么办 院子门对着窗户怎么办 电梯入户同梯人怎么办 房门对着电梯门怎么办 房门对着电梯口怎么办 大门对着电梯门怎么办 房门和电梯对着怎么办 搬家与生肖相冲怎么办 颈椎生理曲度变直怎么办 整个背部长痘痘怎么办 卧室门对着厨房怎么办 卧室门正对厕所怎么办 进门正对厕所门怎么办 门口对着厕所门怎么办 厨房门比大门高怎么办 鼻子上山根横纹怎么办 墙与床的缝隙怎么办 床边与墙有间隙怎么办 抽了烟头晕恶心怎么办 9个月宝宝口臭怎么办 狗舔了人的伤口怎么办 狗舔了结痂伤口怎么办 狗狗指甲变黑了怎么办 狗狗不肯剪指甲怎么办 厕所门对厨房门怎么办 房间门对着镜子怎么办 门直对着楼梯口怎么办 厨房门对着客厅怎么办 卧室正对着马路怎么办 主卧厕所对着床怎么办 卧室门对着床头怎么办 主卧厕所门对床怎么办 老人晕车怎么办最有效方法