MST

星途 面试题库

面试题:C语言指针与函数指针的结合运用

编写一个函数,该函数接受一个函数指针数组作为参数,数组中的每个函数指针指向的函数都接受两个整数参数并返回一个整数。在函数内部,遍历函数指针数组,调用每个函数并传入相同的两个整数参数(例如5和3),最后返回所有函数调用结果的总和。请完整实现该功能,并给出函数指针数组的定义及初始化代码。
38.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

// 定义函数指针指向的函数类型
using FuncType = int(*)(int, int);

// 示例函数1
int add(int a, int b) {
    return a + b;
}

// 示例函数2
int subtract(int a, int b) {
    return a - b;
}

// 主函数,接受函数指针数组并计算结果总和
int sumResults(FuncType funcArray[], int size, int a, int b) {
    int total = 0;
    for (int i = 0; i < size; ++i) {
        total += funcArray[i](a, b);
    }
    return total;
}

int main() {
    // 定义并初始化函数指针数组
    FuncType funcArray[] = {add, subtract};
    int size = sizeof(funcArray) / sizeof(funcArray[0]);

    int result = sumResults(funcArray, size, 5, 3);
    std::cout << "所有函数调用结果的总和为: " << result << std::endl;

    return 0;
}

解释:

  1. 首先定义了一个FuncType,它是一个函数指针类型,指向接受两个int参数并返回一个int的函数。
  2. 接着定义了两个示例函数addsubtract,用于演示函数指针数组中的函数。
  3. sumResults函数接受一个函数指针数组、数组大小以及两个整数参数,遍历数组并调用每个函数,返回所有结果的总和。
  4. main函数中,定义并初始化了函数指针数组funcArray,然后调用sumResults函数并输出结果。