pointers to a function in c

#include <stdio.h>

void say_hello() {
    printf("Hello, world!\n");
}

int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

int multiply(int a, int b) {
    return a * b;
}

int divide(int a, int b) {
    return a / b;
}

int operation(int x, int y, int (*functionPtr)(int, int)) {
    return (*functionPtr)(x, y);
}

int main() {
    int result;
    int (*operationPtr)(int, int);

    operationPtr = add;
    result = operation(10, 5, operationPtr);
    printf("Result of addition: %d\n", result);

    operationPtr = subtract;
    result = operation(10, 5, operationPtr);
    printf("Result of subtraction: %d\n", result);

    operationPtr = multiply;
    result = operation(10, 5, operationPtr);
    printf("Result of multiplication: %d\n", result);

    operationPtr = divide;
    result = operation(10, 5, operationPtr);
    printf("Result of division: %d\n", result);

    return 0;
}