1. 「自定義函數在調用之前,必須進行函數聲明,否則編譯會出錯」這句話為什麼是錯誤的
這句話是錯誤的,只有定義在調用之後的函數才需要聲明,如果定義在調用之前的函數,無需聲明,例子1,定義在調用之後,必須聲明:
main(){
int f();//這個聲明是必須的
printf("%d",f());
}
int f(){return 1;}
例子2,定義在調用之前,無需聲明:
int f(){return 1;}
main(){
/*int f();//這個聲明不需要*/
printf("%d",f());
}最後,這個其實是歷史遺留問題,以前的效率較低,編譯器多次掃描源程序麻煩,現代編譯器為了實現優化,都會反復多次掃描源程序。