函数指针

函数指针

指向函数的指针,存储着函数代码的起始处的地址。
声明数据指针时,要声明指针所指向的数据类型。函数指针要指明函数签名,即参数和返回值

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);
}
posted @ 2022-06-01 17:03  店里最会撒谎白玉汤  阅读(131)  评论(0)    收藏  举报