精華區beta Programming 關於我們 聯絡資訊
※ 引述《HaWay (哈維 - 掛線中...)》之銘言: > 有一種宣告好像是這樣 : > static void (*single_server_pre_accept) (char *, char **); > 使用上是這樣用的 > if (single_server_pre_accept) > single_server_pre_accept(single_server_name, single_server_argv); > 沒有任何 code 去處理 傳入的變數 single_server_name, single_server_argv . > 可以被 if 判斷, 又沒有任何傳入參數, > 後面又塞兩個參數進去, 也沒有其他副程式處理. > 這是哪種型態的宣告啊?? > 謝謝~ function pointer 目的是定一個function的"型式", 成為一種默契讓要自行實作的人明白要有什麼樣的回傳值,什麼樣的參數 像qsort函式,他提供了一個比較用的function 但是沒有寫死在上面,而是提供了function pointer的參數可以傳入 這是一種演算方式"委外"的機制 那天您大爺心情好想要asc order那天又變了心想要變成desc order 或是亂數排列,都只要修改自己的function pointer 不用動到原本設計好的qsort 這樣"委外"的好處是當以上的需求有改變時 可以簡單的僅修改某部分的程式,而不用動到原本設計好的方法 ======================================================== static void (*single_server_pre_accept) (char *, char **); 對任何一個回傳是static void 且傳入參數為char *, char** 的函式都可以指名給這個function pointer 呵,別忘了在大部分的c學習教材都有試著讓人函一下function的address 所以,別懷疑function真的有一個address可以被pointer pointer -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: 163.26.34.214
march20:疑問: 倒底 static 是 qualify 這個 ptr 71.137.27.253 07/19 09:44
march20:還是 ptr 指到的 function ? 71.137.27.253 07/19 09:44
qrtt1:pointer to function address 163.26.34.214 07/19 09:45
ledia:static function 就是 static function ptr 140.112.30.56 07/19 10:55
march20:感覺上 match "static" function 不太合理 71.137.27.253 07/19 11:31
march20:btw, static ptr 要怎麼宣告呢? 71.137.27.253 07/19 11:32
march20:int (static *fp)(char*,char**) ? 71.137.27.253 07/19 11:33
march20:呃, int 改成 void, 一時眼殘 XD 71.137.27.253 07/19 11:35
cole945:static修飾的是sspa吧@o@" 是不是指向220.139.130.179 07/19 13:34
cole945:static的function應該沒有呀呀._."220.139.130.179 07/19 13:34