天天看點

c 進階函數的簡單用法

c 中内置了很多進階的函數,我們先使用排序函數看一下

c 進階函數的簡單用法
c 進階函數的簡單用法

輸出結果為

c 進階函數的簡單用法

為了能使這個qsort排序函數适應很多種排序情況,需要傳入一個排序規則函數當做參數。

下邊介紹一種函數指針數組的使用情況

假如我們要寫一個群發郵件的程式,向不同的人發送不同類型的内容,很自然的想到,我們用struct 來實作

c 進階函數的簡單用法
c 進階函數的簡單用法

我們使用結構來存放需要的資料列印的結果如下

c 進階函數的簡單用法

但是代碼中充斥着大量的函數調用,每次都需要根據type來判斷調用哪個函數,日後如果需要添加新的類型,就要改動很多地方的代碼,這并不是我們想看到的

其實接下來的思想跟上邊的枚舉差不多,我們可以把一類的東西放到一個數組中,根據需要在其中取值就可以了

c 進階函數的簡單用法

經過函數指針數組的改造呢,我們就得出了下邊的代碼

c 進階函數的簡單用法
c 進階函數的簡單用法

上邊的單詞寫錯了 reponse 應該改成 response ,這裡就不做修改了

接下來 引入一個可以傳多個參數的函數的使用方法,類似printf函數

加入某酒吧中有很多種不同的酒,現在需要寫一個程式,當我們輸入酒的名稱的後可以擷取該酒的價格,很簡單,程式是這樣的

c 進階函數的簡單用法
c 進階函數的簡單用法

現在我們已經能夠擷取酒的價格了,但是現在如果我提出這樣一個要求,需要知道幾種單酒的總價的呢。是以我們就需要寫一個函數類似于這樣的

由于輸入的酒品的個數是不固定的,是以順理成章的引申出了可變參數這個概念

我們先看一下列印多個int 的函數

c 進階函數的簡單用法
c 進階函數的簡單用法
c 進階函數的簡單用法
c 進階函數的簡單用法
c 進階函數的簡單用法

經過我們修改後的代碼是這樣的

c 進階函數的簡單用法
c 進階函數的簡單用法

列印結果是

c 進階函數的簡單用法

繼續閱讀