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

  1. Line 1: Function prototype declaration: int calculateSum(int, int);
  2. Line 4: Calling calculateSum(15, 25) inside main().
  3. Line 8-10: Function definition executing addition and returning result.
💻 Practical C Code Example - C User-Defined Functions & Prototypes
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;
}
📤 Compiled Program Output:
Calculated Sum: 40

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

  1. Line 1-5: factorial function: If n<=1 returns 1 (Base Case), else returns n * factorial(n-1).
  2. Line 8: Calling factorial(5) inside main().
💻 Practical C Code Example - C Recursion & Call Stack Allocation
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;
}
📤 Compiled Program Output:
Factorial of 5: 120