精華區beta Programming 關於我們 聯絡資訊
※ 引述《qrtt1.bbs@bbs.sayya.org (foolish)》之銘言: : function pointer : 目的是定一個function的"型式", : 成為一種默契讓要自行實作的人明白要有什麼樣的回傳值,什麼樣的參數 : 像qsort函式,他提供了一個比較用的function : 但是沒有寫死在上面,而是提供了function pointer的參數可以傳入 : 這是一種演算方式"委外"的機制 : 那天您大爺心情好想要asc order那天又變了心想要變成desc order : 或是亂數排列,都只要修改自己的function pointer : 不用動到原本設計好的qsort : 這樣"委外"的好處是當以上的需求有改變時 : 可以簡單的僅修改某部分的程式,而不用動到原本設計好的方法 : ======================================================== : static void (*single_server_pre_accept) (char *, char **); : 對任何一個回傳是static void ^^^^^^^^^^^^^^^^^ 整段說明得很好,但是關於這句有點問題 return type 就只是 "void",不是 "static void" 若是這個 declaration 放在 global 區域 加 static 代表 single_server_pre_accept 這個變數的可見度,只限於當前這個 source file 別的 source file 內就算用 extern .. 也不能取用 若是這個 declaration 放在 function 內 (local scope) 那加 static 意義只是說 single_server_pre_accept 是個 static 變數 下次 call 進來這個 function 時 single_server_pre_accept 這變數的值仍然保留著 : 且傳入參數為char *, char** : 的函式都可以指名給這個function pointer : 呵,別忘了在大部分的c學習教材都有試著讓人函一下function的address : 所以,別懷疑function真的有一個address可以被pointer pointer -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.20.4