3. C Functions, Storage Classes & Recursion
Comprehensive Guide: Modular programming, prototypes, pass-by-value vs reference, storage classes & call stack recursion
Module 1: C User-Defined Functions & Prototypes
Dividing monolithic code into modular, reusable, single-responsibility functions.
🇬🇧 English Definition
A function is a self-contained block of statements that performs a specific task, accepts inputs, and returns a value.
🇮🇳 Hinglish Definition
Function ek reusable code block hota hai jise ek naam diya jata hai. Pura program chhotey functions me batkar neat lagta hai.
Core Concepts & Rules
- Function Prototype: Informs compiler about function return type and arguments before main().
- Function Call: Transfers control to function definition.
- Return Statement: Passes computed result back to caller.
🔍 Line-by-Line Code Breakdown
- Line 1: Function prototype declaration: int calculateSum(int, int);
- Line 4: Calling calculateSum(15, 25) inside main().
- Line 8-10: Function definition executing addition and returning result.
int calculateSum(int x, int y);
int main() {
int result = calculateSum(15, 25);
printf("Calculated Sum: %d\n", result);
return 0;
}
int calculateSum(int x, int y) {
return x + y;
}
Module 2: C Recursion & Call Stack Allocation
Functions calling themselves recursively until reaching a base condition.
🇬🇧 English Definition
Recursion is a programming technique where a function calls itself directly or indirectly to solve smaller instances of a problem.
🇮🇳 Hinglish Definition
Recursion me ek function khud ko hi baar-baar call karta hai. Target base condition aane par recursive calls Ruk jati hai.
Core Concepts & Rules
- Base Case: Prevents infinite stack overflow recursion loops.
- Recursive Step: Reduces problem size towards base condition.
- Stack Frames are created in RAM for every recursive call.
🔍 Line-by-Line Code Breakdown
- Line 1-5: factorial function: If n<=1 returns 1 (Base Case), else returns n * factorial(n-1).
- Line 8: Calling factorial(5) inside main().
int factorial(int n) {
if (n <= 1) return 1; // Base condition
return n * factorial(n - 1); // Recursive call
}
int main() {
int fact = factorial(5);
printf("Factorial of 5: %d\n", fact);
return 0;
}