在c++中普通函数与 内联函数的区别

我们都知道编译的最终产品是可执行程序——— 由一组由机器语言指令组成,在运行程序时,操作系统将这些指令载入到计算机内存中。因此,每一组指令都有一个特定的内存地址。

一.普通函数的调用

a.当代码执行到函数调用指令时,程序将在函数调用后立即存储该指令的地址,同时将参数复制到堆栈中;

b.然后跳到标记函数起点的内存单元当中,执行函数代码,将返回值放回到寄存器当中;

c.跳回到地址被保存的指令处


为了能够对这个执行过程有更加明确的理解,我在这里举个例子:

比如我们在看一篇文章的时候,有个词组的意思我们不理解,这时候我们就需要会去看书下面给的注释,在阅读完注释后我们就会很快的返回的当时正在阅读的地方。这和普通函数在调用过程中的原理非常相似。


因此,在使用普通函数时由于需要来回跳转所以它的执行速度比较慢,特别是需要调用很多次函数时。


二.内联函数的调用

1.如何才能使用内联函数?

a,在函数声明前加上关键字 inline

b.在函数定义前加上关键字 inline

以上两种方法任选其一即可。


2.调用原理

内联函数,顾名思义就是将编译代码和其它代码 “内联” 起来了。所以它在调用的时候是编译器使用相应的函数代码替换函数调用。(这一点和宏替换十分相似)

由于内联代码在执行的时候程序无需进行来回的跳转,所以它的执行速度相对于普通函数能快点;不过它也有自己的缺点,那就是对内存得耗损,如果程序需要在十个地方调用同一个内联函数,那这个程序将会将这个代码拷贝10次


下面我通过一张图片来更加清楚的描述下普通函数和内联函数两者的区别


                                                                   




发布了49 篇原创文章 · 获赞 114 · 访问量 15万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览