1. 程式人生 > 其它 >05-04-設計模式 組合模式

05-04-設計模式 組合模式

函式指標

指向函式的指標,儲存著函式程式碼的起始處的地址。
宣告資料指標時,要宣告指標所指向的資料型別。函式指標要指明函式簽名,即引數和返回值

void (*pf) (int n);  // 括號的優先順序高於*,所以要把*和指標名括起來。
// 可以指向無返回值接收一個整數為引數的函式 

函式指標的作用主要是作為函式的引數,告訴函式要使用哪一個函式

#include<stdio.h>
typedef struct {
    int a;
    int b;
} St;
int sum_(int a[]);
void show(St s);
void pfshow(void (*pf)(St s), St s);  // 函式指標做引數

int main(void)
{
    St s = {1,2};
    void (*ps)(St s);  // 函式指標可指向一個無返回值接收一個struct為引數的函式
    ps = show;
    int (*pss)(int a[]);  // 函式指標可指向一個返回整數的接收一個數組或者int指標為引數的函式
    int arr[] = {1,2,3};
    int *p;
    p = arr;
    pss = sum_;
    pss(p);
    pss(arr);
    ps(s);
    pfshow(ps, s);
    return 0;
}

void show(St s)
{
    printf("%d, %d \n", s.a,s.b);

}
int sum_(int a[])
{
    int ans = 0;
    for(int i=0;i<3;i++)
    {
        ans+=a[i];

    }
    printf("sum %d \n", ans);
    return ans;
}
void pfshow(void(*pf)(St st), St st)
{
    
    printf("args fun pointer\n");
    pf(st);
}