2020年4月19日 星期日

C 語言 - function pointer 函數指標

function pointer 概念


    基本上有 data 的 pointer 就會有 function 的 pointer。
  • 正確的 ( 回傳 int 的 function )
  •     int (*pfi)();
  • 錯誤的 ( 回傳 int pointer 的 function )
  •     int *pfi();

function pointer 宣告


    利用 typedef,然後一樣用 & 取 function pointer
    extern int f1();
    
    typedef int (*funcptr)();
    funcptr pfi;
    pfi = &f1;
    實際上你可以省略 &,因為 function 若不呼叫,他就只能回傳 pointer ( 原文 : When you mention the name of a function but are not calling it, there's nothing else you could possibly be trying to do except generate a pointer to it. )
    pfi = f1;

function pointer 呼叫

  • 正確的 ( 回傳 int 的 function )
  •     int (*pfi)(arg1, arg2);
  • 錯誤的 ( 回傳 int pointer 的 function )
  •     int *pfi(arg1, arg2);
  • 省略的 ( 原理同上,function pointer 除了 Call function 只能 assign 另一 pointer 或比較其值,所以 Compiler 會將 pfi 視為 (*pfi)。) ( 原文 : There's nothing you can do with a function pointer except assign it to another function pointer, compare it to another function pointer, or call the function that it points to. )
  •     int pfi(arg1, arg2);

下一篇 : 

0 意見:

張貼留言

Popular Posts