int (*s[10]) (int);含义,函数指针。

发布时间 2023-09-24 11:45:29作者: sixie

问题
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;
}