Functions in C
Functions are the building blocks of C programs. Unlike higher-level languages, C functions pass arguments by value (copies), require explicit pointer parameters for modification, and support function pointers for callbacks.
40 min•By Priygop Team•Last updated: Feb 2026
Function Code
Example
#include <stdio.h>
// Function declaration (prototype)
int add(int a, int b);
void swap(int *a, int *b); // Pointers for pass-by-reference
// Function definition
int add(int a, int b) {
return a + b;
}
// Pass by value (copy — original unchanged)
void doubleValue(int x) {
x = x * 2; // Only modifies local copy!
}
// Pass by reference (pointer — modifies original)
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
// Recursion
int factorial(int n) {
if (n <= 1) return 1; // Base case
return n * factorial(n - 1); // Recursive case
}
// Function pointer
int multiply(int a, int b) { return a * b; }
int subtract(int a, int b) { return a - b; }
// Function that accepts a function pointer
int operate(int a, int b, int (*operation)(int, int)) {
return operation(a, b);
}
int main() {
// Basic function calls
printf("3 + 4 = %d\n", add(3, 4));
printf("5! = %d\n", factorial(5));
// Pass by reference with swap
int x = 10, y = 20;
swap(&x, &y);
printf("x=%d, y=%d\n", x, y); // x=20, y=10
// Function pointers
int result = operate(10, 3, multiply); // 30
printf("10 * 3 = %d\n", result);
result = operate(10, 3, subtract); // 7
printf("10 - 3 = %d\n", result);
return 0;
}