MST

星途 面试题库

面试题:C语言函数指针数组及动态调用

假设有一组函数,每个函数的返回值为void,参数为int。请定义一个函数指针数组,包含三个这样的函数指针,并编写代码根据用户输入(0 - 2)动态选择并调用相应的函数。
23.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

// 定义函数类型
typedef void (*FunctionPtr)(int);

// 示例函数1
void function1(int num) {
    printf("调用了function1,参数为:%d\n", num);
}

// 示例函数2
void function2(int num) {
    printf("调用了function2,参数为:%d\n", num);
}

// 示例函数3
void function3(int num) {
    printf("调用了function3,参数为:%d\n", num);
}

int main() {
    // 定义函数指针数组
    FunctionPtr functionArray[3] = {function1, function2, function3};
    int choice, param;

    printf("请输入选择(0 - 2):");
    scanf("%d", &choice);

    if (choice < 0 || choice > 2) {
        printf("无效的选择\n");
        return 1;
    }

    printf("请输入参数:");
    scanf("%d", &param);

    // 根据用户选择调用相应的函数
    functionArray[choice](param);

    return 0;
}

上述代码实现了以下功能:

  1. 定义了一个函数指针类型FunctionPtr,它指向返回值为void,参数为int的函数。
  2. 定义了三个符合上述类型的示例函数function1function2function3
  3. main函数中,创建了一个包含三个函数指针的数组functionArray,并将其初始化为指向上述三个函数。
  4. 根据用户输入的选择(0 - 2),调用相应的函数,并传入用户输入的参数。

请注意,在实际应用中,可能需要对用户输入进行更全面的错误处理,例如输入非数字字符的情况等。上述代码仅为了演示核心功能。