Functions
Function ek naamed block hai jo specific kaam karta hai — return type, naam, parameters, aur body hoti hai. main() khud bhi ek function hai — har C program yahi se shuru hota hai.
C mein function ko use karne se pehle "declare" (prototype) karna padta hai agar wo baad mein "define" ho raha hai — warna compiler error dega ki function pehchana nahi. void return type ka matlab function kuch return nahi karta.
// Function prototype
int add(int a, int b);
int main() {
int result = add(5, 3);
printf("%d\n", result); // 8
return 0;
}
// Function definition
int add(int a, int b) {
return a + b;
}- Function = reusable naamed code block
- Prototype declare karo agar function baad mein define ho raha hai
- void = kuch return nahi karta
C mein normal variables (int, float, char) function ko "by value" pass hote hain — function ke andar parameter ki copy milti hai, original variable change nahi hota. Ye Java ke primitive types jaisa hi behavior hai.
Agar function ke andar original variable change karna hai, uska address (pointer) pass karna padta hai — ye "pass by reference" jaisa effect deta hai, aage pointers subtopic mein detail se covered hai.
void tryToChange(int x) {
x = 100; // sirf local copy change hoti hai
}
int main() {
int num = 5;
tryToChange(num);
printf("%d\n", num); // abhi bhi 5!
return 0;
}Recursion tab hota hai jab function khud ko call kare — ek "base case" (jaha recursion rukta hai) aur ek "recursive case" (jaha function khud ko chhote input ke saath call karta hai) hona zaroori hai, warna infinite recursion ho jaata hai (aur eventually stack overflow crash).
int factorial(int n) {
if (n <= 1) return 1; // base case
return n * factorial(n - 1); // recursive case
}
printf("%d\n", factorial(5)); // 120