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;
}