java 内联函数_内联函数-Java架构师必看

关内联函数键字inlinevoidmyprintf(inta){priintf(%d,aC/C++

关内联函数键字inline

void myprintf(int a)

{

priintf("%d",a);

}

int main()

{

for(i=0;i<100;i++)

myprintf(3);

}

对于这个函数,在进行反复的打印3的过程中我们是不是要反复的调用myprintf(int a)这个函数,进函数和出函数是需要时间的,假设这个过程用时为4ms,而执行printf这个操作只需要2ms,那么在100次循环的过程中进出函数的时间比函数功能printf需要的时间还要长,这样很影响工作效率。于是,我们就想要如何去免去进出函数的过程呢?那么就可以声明inline这个关键字,有何用途?当我们声明了一个inline的函数时候,函数被调用的语句就被替换成了函数本身,进行了一个预处理

int main()

{

for(i=0;i<100;i++)

void myprintf(3)

{

printf("%d",3);

}

return 0;

}

这样一来我就非常明显的知道这个函数是干什么的了,就不需要去调用函数的定义部分,再通俗点讲,原来我要从家里去外面的商店去买冰淇淋(来回需要时间),现在商店就在我家里面了,那么我是不是省去了去商店的时间呢?但是相应的我这个家要很大(也就是所谓的空间要很大才能包含这个商店对吧?)这样就是用空间去换取了时间了。

内联函数在编译层面类似于宏替换。也就是说,程序执行过程中调用内联函数不需要入栈出栈,所以效率会提高。

#include

inline int add(int x, int y)

{

return x+y;

}

int main()

{

int i,j,k;

printf("请输入两个整数的值:");

scanf("%d%d",&i,&j);

k=add(i,j);

printf("k=%d ",k);

return 0;

}

关内联函数键字inlinevoidmyprintf(inta){priintf(%d,aC/C++ 关内联函数键字inline void myprintf(int a) { priintf("%d",a); } int main() { for(i=0;i<100;i++) myprintf(3); } 对于这个函数,在进行反复的打印3的过程中我们是不是要反复的调用myprintf(int a)这个函数,进函数和出函数是需要时间的,假设这个过程用时为4ms,而执行printf这个操作只需要2ms,那么在100次循环的过程中进出函数的时间比函数功能printf需要的时间还要长,这样很影响工作效率。于是,我们就想要如何去免去进出函数的过程呢?那么就可以声明inline这个关键字,有何用途?当我们声明了一个inline的函数时候,函数被调用的语句就被替换成了函数本身,进行了一个预处理 int main() { for(i=0;i<100;i++) void myprintf(3) { printf("%d",3); } return 0; } 这样一来我就非常明显的知道这个函数是干什么的了,就不需要去调用函数的定义部分,再通俗点讲,原来我要从家里去外面的商店去买冰淇淋(来回需要时间),现在商店就在我家里面了,那么我是不是省去了去商店的时间呢?但是相应的我这个家要很大(也就是所谓的空间要很大才能包含这个商店对吧?)这样就是用空间去换取了时间了。 内联函数在编译层面类似于宏替换。也就是说,程序执行过程中调用内联函数不需要入栈出栈,所以效率会提高。 #include inline int add(int x, int y) { return x+y; } int main() { int i,j,k; printf("请输入两个整数的值:"); scanf("%d%d",&i,&j); k=add(i,j); printf("k=%d ",k); return 0; }
经验分享 程序员 微信小程序 职场和发展