MST

星途 面试题库

面试题:C语言函数指针高级难度题目

假设有一个结构体 `struct MathOps { int (*add)(int, int); int (*subtract)(int, int); };`,请编写代码初始化这个结构体,使其 `add` 成员指向一个实现加法的函数 `int add(int a, int b) { return a + b; }`,`subtract` 成员指向一个实现减法的函数 `int subtract(int a, int b) { return a - b; }`,并且编写一个函数 `void performOps(struct MathOps ops, int num1, int num2)`,在这个函数中通过结构体中的函数指针调用相应的函数并打印结果。
38.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

// 加法函数
int add(int a, int b) {
    return a + b;
}

// 减法函数
int subtract(int a, int b) {
    return a - b;
}

// 结构体定义
struct MathOps {
    int (*add)(int, int);
    int (*subtract)(int, int);
};

// 执行操作的函数
void performOps(struct MathOps ops, int num1, int num2) {
    int resultAdd = ops.add(num1, num2);
    int resultSubtract = ops.subtract(num1, num2);
    printf("Addition result: %d\n", resultAdd);
    printf("Subtraction result: %d\n", resultSubtract);
}

int main() {
    struct MathOps ops;
    ops.add = add;
    ops.subtract = subtract;

    int num1 = 5, num2 = 3;
    performOps(ops, num1, num2);

    return 0;
}