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;}【演示结果】
- C++学习笔记十一之内联函数
- C/C++学习笔记10:内联函数
- C++学习序列笔记之内联函数
- 内联函数学习笔记
- 学习笔记 内联函数
- HTML学习笔记(十一)内联框架
- 【C++】学习笔记三十九——内联函数
- c++学习笔记 -- 内联函数
- C++学习笔记之——引用 内联函数
- 汇编学习笔记1 --- C内联汇编之Hello World
- AT&T学习笔记汇编之内联c语言
- C++学习之内联函数
- C++学习之内联函数
- C++ 内联函数(十一)--inline对比C宏
- mysql学习笔记之十一(常用函数)
- 【黑马程序员】C语言学习笔记之指针(十一)
- c语言学习笔记十一
- 【从C到C++学习笔记】内联成员函数/成员函数重载及缺省参数
- centos6.5下搭建openvpn服务,访问内网服务器
- 电商分类:UITableView和UICollectionView的联动
- Android软键盘的一些注意事项
- Visual C++内存泄露检测工具(VLD)
- 浅析H5新增的Webworker对象
- C++学习笔记十一之内联函数
- jeecg下实现自动默认模糊查询
- WIN7安装MTK驱动(系统找不到指定文件!解决方案)
- Hibernate框架03
- Cocos2d播放Cocostudio编辑动画
- ZCMU—1948
- iOS如何完美简单实现UITableView索引的放大悬浮提示View显示
- 学习笔记-Coondinatorlayout.Behavior<View>
- 动态规划:HDU3496-Watch The Movie(二维费用的背包问题)