How to pass a function as a parameter in C

4 Answers

0 votes
// Passing a Simple Function Pointer

#include <stdio.h>

void print_number(int x) {
    printf("Number: %d\n", x);
}

void call_function(void (*func)(int), int value) {
    func(value);   // call the passed function
}

int main() {
    call_function(print_number, 42);
    
    return 0;
}


/*
run:

Number: 42

*/

 



answered May 12 by avibootz
0 votes
// Passing Math Operations (add/subtract)

#include <stdio.h>

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

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

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

int main() {
    printf("Add: %d\n", calculate(add, 10, 5));
    
    printf("Subtract: %d\n", calculate(subtract, 10, 5));
    
    return 0;
}


/*
run:

Add: 15
Subtract: 5

*/

 



answered May 12 by avibootz
0 votes
// Using typedef to Simplify Function Pointers

#include <stdio.h>

typedef int (*operation_t)(int, int);

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

int apply(operation_t op, int x, int y) {
    return op(x, y);
}

int main() {
    printf("Multiply: %d\n", apply(multiply, 6, 7));
    
    return 0;
}



/*
run:

Multiply: 42

*/

 



answered May 12 by avibootz
0 votes
// Passing a Comparison Function (qsort)

#include <stdio.h>
#include <stdlib.h>

int compare_ints(const void *a, const void *b) {
    int x = *(int*)a;
    int y = *(int*)b;
    
    return x - y;
}

int main() {
    int arr[] = {5, 2, 9, 1, 7};
    int n = sizeof(arr) / sizeof(arr[0]);

    qsort(arr, n, sizeof(int), compare_ints);

    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);

    return 0;
}


/*
run:

1 2 5 7 9 

*/

 



answered May 12 by avibootz
...