Module 6 of 13 · C Programming Fundamentals · Beginner

Functions

Duration: 55 min

Functions are reusable blocks of code that perform specific tasks. They help organize code, reduce duplication, and make programs easier to maintain. Every C program has at least one function: main().

Function Declaration & Definition

#include <stdio.h>

// Function declaration (prototype)
int add(int a, int b);

int main() {
    int result = add(5, 3);
    printf("Result: %d\n", result);
    return 0;
}

// Function definition
int add(int a, int b) {
    return a + b;
}

Function Parameters & Return Values

#include <stdio.h>

// Function with no parameters, no return value
void greet() {
    printf("Hello!\n");
}

// Function with parameters, no return value
void printSum(int a, int b) {
    printf("Sum: %d\n", a + b);
}

// Function with parameters and return value
int multiply(int a, int b) {
    return a * b;
}

// Function with no parameters, with return value
int getAge() {
    return 25;
}

int main() {
    greet();
    printSum(10, 20);
    int product = multiply(4, 5);
    printf("Product: %d\n", product);
    return 0;
}

Pass by Value

#include <stdio.h>

void increment(int x) {
    x++;  // Only increments the copy
}

int main() {
    int num = 5;
    increment(num);
    printf("num: %d\n", num);  // Still 5, not 6
    
    return 0;
}

Multiple Return Values (using pointers)

#include <stdio.h>

// Function that modifies variables through pointers
void getMinMax(int a, int b, int *min, int *max) {
    if (a < b) {
        *min = a;
        *max = b;
    } else {
        *min = b;
        *max = a;
    }
}

int main() {
    int minimum, maximum;
    getMinMax(10, 5, &minimum, &maximum);
    printf("Min: %d, Max: %d\n", minimum, maximum);
    
    return 0;
}

Recursion

#include <stdio.h>

// Calculate factorial recursively
int factorial(int n) {
    if (n <= 1) {
        return 1;  // Base case
    }
    return n * factorial(n - 1);  // Recursive case
}

// Calculate Fibonacci number
int fibonacci(int n) {
    if (n <= 1) {
        return n;
    }
    return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    printf("Factorial of 5: %d\n", factorial(5));
    printf("Fibonacci of 6: %d\n", fibonacci(6));
    
    return 0;
}

Scope & Local Variables

#include <stdio.h>

int globalVar = 10;  // Global variable

void function1() {
    int localVar = 20;  // Local to function1
    printf("Local: %d, Global: %d\n", localVar, globalVar);
}

void function2() {
    // localVar is not accessible here
    printf("Global: %d\n", globalVar);
}

int main() {
    function1();
    function2();
    // localVar is not accessible here either
    
    return 0;
}

Static Variables

#include <stdio.h>

void counter() {
    static int count = 0;  // Initialized only once
    count++;
    printf("Count: %d\n", count);
}

int main() {
    counter();  // Count: 1
    counter();  // Count: 2
    counter();  // Count: 3
    
    return 0;
}

Quiz 1: Function Declaration

❓ What is a function prototype?

Quiz 2: Pass by Value

❓ What happens when you pass a variable to a function in C?

Quiz 3: Recursion

❓ What is essential for a recursive function to avoid infinite recursion?

Quiz 4: Scope

❓ Where can a local variable be accessed?

Quiz 5: Static Variables

❓ How many times is a static variable initialized?

← Previous Continue interactively → Next →

Related Courses