MST

星途 面试题库

面试题:C语言指针初始化与函数指针的深度融合

编写一段C语言代码,定义一个函数指针数组,每个函数指针指向一个返回`int`类型且接受`int`类型参数的函数。初始化这些函数指针,并调用这些函数指针所指向的函数,实现对输入整数的不同数学运算(例如平方、立方、开方)。要求考虑函数指针初始化过程中的类型匹配、作用域以及可能出现的错误处理。
14.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <math.h>

// 定义函数
int square(int num) {
    return num * num;
}

int cube(int num) {
    return num * num * num;
}

int squareRoot(int num) {
    return (int)sqrt(num);
}

int main() {
    // 定义函数指针数组
    int (*funcPtrArray[3])(int);

    // 初始化函数指针数组
    funcPtrArray[0] = square;
    funcPtrArray[1] = cube;
    funcPtrArray[2] = squareRoot;

    int input = 5;

    // 调用函数指针所指向的函数
    for (int i = 0; i < 3; i++) {
        if (funcPtrArray[i]) {
            int result = funcPtrArray[i](input);
            if (i == 0) {
                printf("平方结果: %d\n", result);
            } else if (i == 1) {
                printf("立方结果: %d\n", result);
            } else {
                printf("开方结果: %d\n", result);
            }
        } else {
            printf("函数指针未正确初始化\n");
        }
    }

    return 0;
}

代码说明:

  1. 定义函数:定义了三个函数 square(求平方)、cube(求立方)、squareRoot(求开方),它们都接受一个 int 类型参数并返回 int 类型结果。
  2. 定义函数指针数组int (*funcPtrArray[3])(int); 定义了一个包含三个元素的函数指针数组,每个函数指针指向一个接受 int 参数并返回 int 类型的函数。
  3. 初始化函数指针数组:将每个函数指针指向对应的函数。
  4. 调用函数:通过遍历函数指针数组,调用每个函数指针所指向的函数,并输出结果。同时在调用前检查函数指针是否正确初始化,以处理可能的错误。