C语言的inline内联函数的作用

来源:本站
导读:目前正在解读《C语言的inline内联函数的作用》的相关信息,《C语言的inline内联函数的作用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《C语言的inline内联函数的作用》的详细说明。
简介:编译器完成的,在调用处将函数展开,减少了调用函数时进栈和出栈的次数,坏处是会增加代码段的大小(缺点:增加了编译后的二进制文件的大小),为了提高运行的速度,对于一些程序代码小,运行时间短但利用次数比较多的函数我们就定义为inline,对于短小的函数,可以省去CALL保存现场等操作,提高程序运行速度。

关内联函数键字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=%dn",k);   return 0;  }  

提醒:《C语言的inline内联函数的作用》最后刷新时间 2024-03-14 01:01:32,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《C语言的inline内联函数的作用》该内容的真实性请自行鉴别。