2017-04-04 187 views
0

我正在學習使用編程手冊中的函數指針。在那裏我發現了使用bsearch()和qsort()。這兩個函數有一個函數指針cmpfunc的參數。cmpfunc in bsearch()in c

在qsort()中需要cmpfunc來比較兩個元素。

我不明白爲什麼在bsearch()中需要cmpfunc以及它是如何工作的。

請幫幫我。提前致謝。

+0

我只能假定你的意思,但通常你會將一個比較函數傳遞給一個排序函數,以允許用戶選擇他們自己的排序方案,即允許用戶按照升序或降序排序元素,或者在排序之後排序他們的價值mod 5,或者你真正喜歡的任何東西。 –

回答

2

根據this文檔,bsearch比較器函數與使用qsort函數的函數類似,需要對數組中的元素進行評估。如果包含了所需的元素或者在每次迭代中丟棄了一半的搜索空間,這就需要終止搜索;作用與qsort函數中的作用相同。

+0

謝謝@Codor – ishtiaq11

1

bsearch中調用比較函數cmpfunc來判斷被檢查的元素是否實際上與該鍵匹配,如果不是,則該鍵在列表中是早於還是晚。

+0

Thanks @Ross Presser。 – ishtiaq11