在編寫C語言的函數(shù)時,有幾個要點需要我們牢記,因為它們影響到函數(shù)的效率和可用性。
4.5.1 參數(shù)和通用函數(shù)
通用函數(shù)是指能夠被用在各種情況下,或者是可被許多不同程序員使用的函數(shù)。我們不應該把通用函數(shù)建立在全局變量上(不應該在通用函數(shù)中使用全局變量)。函數(shù)所需要的所有數(shù)據(jù)都應該用參數(shù)傳遞(在個別難以這樣做的情況下,可以使用靜態(tài)變量)。使用參數(shù)傳遞,
除了有助于函數(shù)能用在多種情況下之外,還能提高函數(shù)代碼的可讀性。不用全局變量,可以使得函數(shù)減少因副作用而導致錯誤的可能性。
4.5.2 效率
函數(shù)是C語言的基本構(gòu)件。對于編寫簡單程序之外的所有程序來說,函數(shù)是必不可少的。
但在一些特定的應用中,應當消除函數(shù),而采用內(nèi)嵌代碼。內(nèi)嵌代碼是指一個函數(shù)的語句中不含函數(shù)調(diào)用語句。僅當執(zhí)行速度是很關鍵的場合下,才用內(nèi)嵌代碼而不用函數(shù)。
有兩個原因使得內(nèi)嵌代碼的執(zhí)行速度比函數(shù)快。首先,調(diào)用需要花費時間;其次,如果有參數(shù)需要傳遞,就要把它們放在堆棧中,這也要用時間。在幾乎所有的應用中,執(zhí)行時間上的這些微小開銷是微不足道的。不過當時間開銷至關重要時,使用內(nèi)嵌代碼消除函數(shù)調(diào)用,
可以把每次函數(shù)調(diào)用的開銷節(jié)省下來。下面的兩個程序都是打印從1到1 0的數(shù)的平方。由于函數(shù)調(diào)用需要花費時間,所以內(nèi)嵌代碼版本運行的比另一個要快。