内联函数的用途
Posted ybossy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内联函数的用途相关的知识,希望对你有一定的参考价值。
我们使用函数的目的是为了避免重复制造轮子,也就是为了避免重复写相同的代码。凡事有利有弊,使用函数固然课以优化我们的代码,但却增加了开销,因为每一次调用函数的过程中都会消耗内存,就会为函数分配一个栈,并且调用函数本身也会花费一些时间,并在计算机底层做一些工作(保护原来的工作环境,进入了新的执行环境)。那么我们的解决方案是使用内联函数。
内联函数实在执行函数过程中遇到函数名时不返回调用函数,而是在函数名所在地写上函数的代码。举个例子:
#include <iostream>
#include <Windows.h>
void test(int n);
int main (void){
int number;
printf("请输入您想打印的数的个数:");
scanf("%d",&number);
for(int i=0;i<number;i++ ){
test(i+1);
}
system("pause");
return 0;
}
void test(int n){
printf("%d
",n);
}
显然这个函数想要实现的功能非常简单,但是次数较多,当n的值较大时,for循环每一次返回调用函数都要消耗一定的栈空间,printf("%d ",n);可能只要1ms,但返回调用函数却要10ms,这样子时很亏的。但是使用内联函数却可以解决这个问题:
#include <iostream>
#include <Windows.h>
inline void test(int n);
int main (void){
int number;
printf("请输入您想打印的数的个数:");
scanf("%d",&number);
for(int i=0;i<number;i++ ){
test(i+1);
}
system("pause");
return 0;
}
inline void test(int n){
printf("%d
",n);
}
相当于普通函数在通话过程中用的是电话,而内联函数用的却是对讲机,如果我想实行的功能较为繁琐,但调用次数不多,就使用函数,反之实行的功能较简单,代码短,但实行次数非常多,我们就使用内联函数。这也就是电话和对讲机的优劣之处。总之在使用过程中要看情况使用。
以上是关于内联函数的用途的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin函数 ⑦ ( 内联函数 | Lambda 表达式弊端 | “ 内联 “ 机制避免内存开销 - 将使用 Lambda 表达式作为参数的函数定义为内联函数 | 内联函数本质 - 宏替换 )