程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言的內聯函數的作用詳解

C語言的內聯函數的作用詳解

編輯:關於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<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;

}


 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved