1.函数指针 函数指针:指向函数的指针 可通过函数指针调用函数 #include stdio.h//函数指针//函数名和函数名都可表示函数的地址,可通过函数指针调用函数int Add(int x, int y){ return x + y;}i
1.函数指针
函数指针:指向函数的指针
可通过函数指针调用函数
#include <stdio.h>
//函数指针
//函数名和&函数名都可表示函数的地址,可通过函数指针调用函数
int Add(int x, int y)
{
return x + y;
}
int main()
{
int (*pf)(int, int) = &Add;//也可写为Add
int a = Add(8, 4);
int b = (&Add)(8, 4);//Add和&需要加括号,否则Add先和后面的括号结合
int c = (*pf)(8, 4);
int d = pf(8, 4);
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
printf("%d\n", d);
}
运行结果:
调用结果相同
2.函数指针数组
函数指针数组:存放函数指针的数组(转移表)
如 int(*arr[4])(int,int) ;//*arr[4]是指针数组的类型,外侧为数组元素(存放的元素即函数指针)的类型
以下为利用函数指针数组写的简易计算器
#include <stdio.h>
/*简易计算器*/
int Add(int x, int y)
{
return x + y;
}
int Sub(int x, int y)
{
return x - y;
}
int Mul(int x, int y)
{
return x * y;
}
int Div(int x, int y)
{
return x / y;
}
int main()
{
int (*arr[4])(int, int) = { Add,Sub,Mul,Div };//函数指针数组,元素为函数指针,Add是函数名,可表示函数的地址,此处可将Add改为&Add
int i = 0;
for (i = 0; i < 4;i++)
{
int ret = arr[i](8, 4);//分别计算8对4的加减乘除
printf("%d\n", ret);
}
}
运行结果:
3.指向函数指针数组的指针(了解,知道即可)
如
int (*arr[4])(int, int) = { Add,Sub,Mul,Div };//
int (*(*ppfarr)[5](int,int)=&arr;//*ppfarr是指针,指向数组,而指向数组则是存放函数指针的数组
以上就是函数指针和函数指针数组的定义,欢迎指正交流~
【文章出处:香港服务器 https://www.68idc.cn欢迎留下您的宝贵建议】