Function Pointers
Ek function, ek variable ki tarah, ek address par rehta hai — aur C aapko wo address ek pointer mein store karne deta hai. int (*operation)(int, int) operation ko do ints lene wale aur ek int return karne wale function ke pointer ke roop mein declare karta hai; use ek function naam assign karna (call kiye bina) us function ka address store kar deta hai.
#include <stdio.h>
int add(int a, int b) { return a + b; }
int subtract(int a, int b) { return a - b; }
int main() {
int (*operation)(int, int) = add;
printf("%d\n", operation(5, 3));
operation = subtract;
printf("%d\n", operation(5, 3));
return 0;
}8 2
operation(5, 3) call karna jo bhi function operation currently point kar raha hai use call karta hai — pehli baar add, reassignment ke baad subtract. Isi tarah C callbacks aur dynamic dispatch implement karta hai, bina is site ki doosri languages ke class ya interface machinery ke jo isi idea ke liye use hoti hai.
Aage: preprocessor — ek alag, purely textual pass jo compiler ke aapka code dekhne se pehle run hota hai.
Practice exercise
Functions add(int,int) aur subtract(int,int) likho. Ek function pointer declare karo jo add par initialize ho, use (5, 3) ke sath call karo aur result print karo.