函数指针
函数指针
指向函数的指针,存储着函数代码的起始处的地址。
声明数据指针时,要声明指针所指向的数据类型。函数指针要指明函数签名,即参数和返回值
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);
}