C语言中内联函数的作用

C语言中内联函数的作用

 

分类: C/C++

2012-06-05 20:37:52

 

C语言中内联函数到底有什么作用?

试想一下,每当我们在假设就在主函数中调用另外一个函数的时候,那么这个函数就要入栈或者出栈,比如说下面的一个例子:


 

点击(此处)折叠或打开

  1. Void myprint()
  2.  
  3. {
  4.  
  5. Printf("%d",3);
  6.  
  7. }
  8.  
  9. Void main()
  10.  
  11. {
  12.  
  13. Int i;
  14.  
  15. For(i=0;i<100;i++)
  16.  
  17. Myprint(2);
  18.  
  19. }


 

在主函数中调用myprin()函数打印2这个数字,那么我们就要调用函数100次,意味着这个函数要进栈100次,出栈100次,这样一来我们就打印一个小小的2就把大量的时间花费在进栈和出栈之上了,当我们把程序改为如下所示的时候呢:


 

点击(此处)折叠或打开

  1. Void main()
  2. {
  3.     Int i;
  4.     For(i=0;i<100;i++)
  5.     Void myprint()
  6.     {
  7.     Printf("%d",3);
  8.     }
  9. }
  10. 此时相当于
  11. static inline void myprint(int n);
  12. static inline void myprint(int n)
  13. {
  14.     printf("%d",n);
  15. }
  16. void main()
  17. {
  18.   int i;
  19.   for(i=0;i<100;i++)
  20.     myprint(3);
  21.  
  22. }

此时我们就不需要进栈出栈了,直接打印2就可以了,当然无论任何事,得到了一定的方便之后就必须得付出一定的代价,即此时的空间的问题。打个比方,现在我们要去一个超市买东西,而超市距离我们家有好几里路,此时你要话费一定的时间在去超市的路上,可是现在呢超市已经搬到家里了,我们就没有必要去超市了,因为超市已经在家里了,当然你的家有那么大?能容得下一个超市?所以此时就存在一个空间的问题,即你必须扩大你家,才能够容纳的下一个超市。

对于内存来说也是一样的,减少了对栈的进出时间的开销,我们却扩大了主存的空间来容纳本来在栈里的函数,在C语言中实现这一功能是用内联函数inline来实现的。

这就是inline函数的作用!

猜你喜欢

转载自blog.csdn.net/weixin_41632560/article/details/83028761