问题
int (*s[10]) (int);含义是什么?
答案
是一个包含10个函数指针的数组的声明。
示例
一般情况看到的函数指针如下:
int fun1(int);//这是一个函数声明
int (*pf)(int);//声明了一个函数指针
pf=fun1;//将函数的地址赋值给pf。
这里的函数指针仅有一个pf,而问题中是用数组存放函数指针,可以存放10个函数指针。
完整示例代码
#include <iostream>
int fun1(int num) {
return num + 1;
}
int fun2(int num) {
return num * 2;
}
int main() {
int (*s[10])(int); // 声明一个包含10个函数指针的数组
int (*pf)(int); //声明一个函数指针
s[0] = fun1; //传递函数地址
s[1] = fun2; //传递函数地址
pf=fun1;//传递函数地址
int result1 = s[0](2); //调用数组第1个函数指针,并传递参数2
int result2 = s[1](4); //调用数组第2个函数指针,并传递参数4
int result3 = pf(3); //调用pf函数指针,并传递参数3
std::cout<<"The Result 1: "<<result1<<std::endl;//输出3
std::cout<<"The Result 2: "<<result2<<std::endl;//输出8
std::cout<<"The Result 3: "<<result3<<std::endl;//输出4
return 0;
}