第 24 章 函數介面

目錄

1. 本章的預備知識
1.1. strcpystrncpy
1.2. mallocfree
2. 傳入參數與傳出參數
3. 兩層指針的參數
4. 返回值是指針的情況
5. 回調函數
6. 可變參數

我們在第 6 節 “折半查找”講過,函數的調用者和函數的實現者之間訂立了一個契約,在調用函數之前,調用者要為實現者提供某些條件,在函數返回時,實現者要對調用者盡到某些義務。如何描述這個契約呢?首先靠函數介面來描述,即函數名,參數,返回值,只要函數和參數的名字起得合理,參數和返回值的類型定得準確,至于這個函數怎麼用,調用者單看函數介面就能猜出八九分了。函數介面並不能表達函數的全部語義,這時文檔就起了重要的補充作用,函數的文檔該寫什麼,怎麼寫,Man Page為我們做了很好的榜樣。

函數介面一旦和指針結合起來就變得異常靈活,有五花八門的用法,但是萬變不離其宗,只要像圖 23.1 “指針的基本概念”那樣畫圖分析,指針的任何用法都能分析清楚,所以,如果上一章你真正學明白了,本章不用學也能自己領悟出來,之所以寫這一章是為了照顧悟性不高的讀者。本章把函數介面總結成幾類常見的模式,對於每種模式,一方面講函數介面怎麼寫,另一方面講函數的文檔怎麼寫。