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?