簡體   English   中英

使用指針功能有什么好處?

[英]What are the advantages of using pointers to function?

使用函數指針而不是函數本身的真正好處是什么? 它會使執行更快嗎? 或者當它傳遞給另一個函數時它是否提供了便利?

它使您能夠在運行時“選擇”業務邏輯的一個組件 - 與硬編碼函數名稱形成對比,這限制了您選擇在編譯時使用哪個函數。

在某些情況下,您必須使用指針來執行功能,沒有其他方法。 例如,要實現回調函數,請指定比較器函數( 排序例程中的最后一個參數)。

編輯:在評論中指定,這是關於C.函數指針來自C.

函數指針是將函數存儲在變量中並將它們傳遞給其他函數的方法。 沒有“常規功能”的“優勢”,它們是完全不同的東西,試圖比較它們沒有意義。 這就像問“哪個更好,變量或是否有陳述?”

函數指針提供否則將不可用的功能。

實際上,傳遞函數的指針比調用函數本身要慢一點。 但差別很小,幾乎沒有任何影響。

正如喬恩所說,當你可以將函數從程序的一部分傳遞給另一部分時,它在某些情況下會帶來更大的靈活性。

函數指針用於許多情況,在這種情況下,您不確定要准確調用哪個函數。 讓我們舉個例子。 你想排序一個數組。 為此,您要編寫通用排序函數。 現在這個排序函數需要比較數組元素。 但由於數組可以包含任何元素(int,浮點數,字符串,用戶定義的類型等),這種排序函數如何比較元素。 因此,在這種情況下,您可以將排序確定函數作為參數傳遞給此排序函數,並基於它可以對數組進行排序。 而且,它在另一種方式中也是有用的。 假設您要對字符串數組(一串數字)進行排序。 您可能希望以數字或字母方式對其進行排序。

在這種情況下,當您想要按數字排序時,可以傳遞比較函數,該函數根據轉換為int的字符串值進行比較。 等等...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM