Skip to main content

Command Palette

Search for a command to run...

Function Pointers

Updated
2 min read
A

I am a Student, who finds beauty in simple things. I like to teach sometimes.

C is already so hard and why such function pointers???

They are interesting and they help you to get separateed from soydevs who use chatgpt and genAI to code. May the legacy of legacy programmers Rise!

int func(int x, int y) {
    return x + y;
}

// Declaring a Function Pointer
int (*ptr_name) (int, int) = func;

When we write a fucntion like this, it is converted into machine code (binary boop boop beep) by the compiler at compile time. A fucntion ultimately is just an address in memory where there exists some code. So, Techinically, we can make and use function pointers for different purposes.

Suppose we do something like

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

bool is_even(int x){
    return x % 2 == 0;
}

void print_conditional(int x[10], bool (*predicate) (int)) {
    for (int i = 0; i < 10; i++) {
        if (predicate(x[i])) {
            printf("%d\n", x[i]);
        }
    }
}

int main() {
    int x[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    print_conditional(x, is_even);
}

Gives Output

batman@batcave ~/C/c (master)> goku fp.c
2
4
6
8
10
batman@batcave ~/C/c (master)>

Heck with usability, This is cool that i can write k different predicate check functions, which can be passed into the print_conditional without changing the core logic. Write good test cases, or making very generic abstract functions… Do anything. Its C. See?

Advanced C

Part 1 of 1

In this series, I will learn and write on topics related to advanced C, inspired from https://www.youtube.com/@cacharle

More from this blog

Aman Pathak

58 posts

Things I would speak if the person in front of me is me