内联函数的用途

  我们使用函数的目的是为了避免重复制造轮子,也就是为了避免重复写相同的代码。凡事有利有弊,使用函数固然课以优化我们的代码,但却增加了开销,因为每一次调用函数的过程中都会消耗内存,就会为函数分配一个栈,并且调用函数本身也会花费一些时间,并在计算机底层做一些工作(保护原来的工作环境,进入了新的执行环境)。那么我们的解决方案是使用内联函数。

  内联函数实在执行函数过程中遇到函数名时不返回调用函数,而是在函数名所在地写上函数的代码。举个例子:

#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);
}

显然这个函数想要实现的功能非常简单,但是次数较多,当n的值较大时,for循环每一次返回调用函数都要消耗一定的栈空间,printf("%d\n",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",n);
}

相当于普通函数在通话过程中用的是电话,而内联函数用的却是对讲机,如果我想实行的功能较为繁琐,但调用次数不多,就使用函数,反之实行的功能较简单,代码短,但实行次数非常多,我们就使用内联函数。这也就是电话和对讲机的优劣之处。总之在使用过程中要看情况使用。

猜你喜欢

转载自www.cnblogs.com/Ybossy/p/12151785.html