C語言的內聯函數的作用


 

   view plain copy關內聯函數鍵字inline

   view plain copyvoid 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的函數時候,函數被調用的語句就被替換成了函數本身,進行了一個預處理

 view plain copyint main()

  {

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

  void myprintf(3)

  {

  printf(“%d”,3);

  }

  return 0;

  }

  這樣一來我就非常明顯的知道這個函數是干什么的了,就不需要去調用函數的定義部分,再通俗點講,原來我要從家里去外面的商店去買冰淇淋(來回需要時間),現在商店就在我家里面了,那么我是不是省去了去商店的時間呢?但是相應的我這個家要很大(也就是所謂的空間要很大才能包含這個商店對吧?)這樣就是用空間去換取了時間了。

  內聯函數在編譯層面類似於宏替換。也就是說,程序執行過程中調用內聯函數不需要入棧出棧,所以效率會提高。

  [cpp] view plain copy#include《stdio.h》

  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\n”,k);

  return 0;

  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM