目录
一、函数指针
关于函数指针,先看看两段代码:
(* (void(*)())1)()
是不是晦涩难懂,其实要以1为突破口,1的前面实际上是void(*)()函数指针,这里发生了强制类型转换,之后再通过*访问,再进行传参调用。
void(* print(char, void(*)(double)))(double)
声明的print函数的第一个参数的类型是char,第二个参数的类型是函数指针类型void(*)(double),返回类型是void(*)(double)。
再来看看函数的地址传参:
int Add(int x, int y)
{
return x + y;
}
void print(int(*pAdd)(int, int))//用函数指针类型来作为形参接收
{
int a = 9;
int b = 9;
int ret = (*pAdd)(9, 9);//也可写为int ret = pAdd(9,9);pAdd作为指针变量,指向Add函数,给两个参数9和9进行计算
printf("%d\n", ret);
}
int main()
{
print(Add);//传参为Add函数的地址
return 0;
}
二、计算器的实现
函数指针数组,即把函数的地址存到数组中。
void(*arr[10])