Functions are the building blocks of C programs. They divide large programs into smaller, manageable, and reusable modules. A function performs a specific task and can be executed whenever it is called.
1. Brief Overview of Functions
A function is a block of code designed to perform a particular operation.
Key points:
- Improves code readability
- Supports reusability
- Makes debugging easier
- Enables modular programming
Types of functions:
- Library Functions (built-in) →
printf(),scanf(),strlen() - User-Defined Functions → created by the programmer
2. Defining a Function in C
A function definition specifies what a function does.
Syntax
return_type function_name(parameter_list) {
// function body
}
Example
int add(int a, int b) {
return a + b;
}
Components:
- return_type → type of value the function returns
- function_name → identifier
- parameters → inputs
- function body → code executed when called
3. Accessing (Calling) a Function
After defining a function, you must call it to execute its code.
Syntax
function_name(arguments);
Example
int result = add(5, 3);
Function calling may occur:
- in
main() - inside another function
- inside itself (recursion)
4. Passing Arguments to a Function
C supports passing values (arguments) to functions, allowing flexible processing.
There are two ways:
a) Pass by Value (default)
A copy of the variable is passed.
Changes inside the function do not affect the original variable.
void change(int x) {
x = 50;
}
b) Pass by Reference (Using Pointers)
The function receives the memory address.
Changes reflect in the original variable.
void update(int *p) {
*p = 100;
}
5. Specifying Argument Data Types
When declaring or defining a function, the data type of each parameter must be specified.
Example
int sum(int a, float b, double c);
Parameters:
a→ intb→ floatc→ double
Correct data types ensure:
- proper memory allocation
- correct function execution
- type safety
6. Function Prototypes
A function prototype tells the compiler:
- function name
- return type
- number of parameters
- parameter data types
It must be written before main() if the function is defined later.
Syntax
return_type function_name(parameter_type1, parameter_type2, ...);
Example
int multiply(int, int);
Purpose:
- Enables early type checking
- Prevents errors
- Improves readability
Program Example – Using Function Prototype
#include <stdio.h>
int multiply(int, int); // prototype
int main() {
int result = multiply(4, 5);
printf("Result = %d", result);
return 0;
}
int multiply(int a, int b) { // definition
return a * b;
}
7. Recursion
Recursion is a process in which a function calls itself to solve a problem.
Every recursive function must have:
- Base condition → stops the recursion
- Recursive call → calls itself
Example: Factorial using Recursion
int factorial(int n) {
if (n == 0)
return 1; // base condition
else
return n * factorial(n - 1); // recursive call
}
Calling:
factorial(5);
Recursion is ideal for:
- factorial
- Fibonacci
- tree traversal
- divide-and-conquer algorithms
8. Complete Program Demonstrating All Concepts
#include <stdio.h>
// Function prototype
int sum(int, int);
int factorial(int);
int main() {
int a = 5, b = 10;
// Accessing a function
printf("Sum = %d\n", sum(a, b));
// Recursion
printf("Factorial = %d", factorial(5));
return 0;
}
// Defining a function
int sum(int x, int y) {
return x + y;
}
// Recursive function
int factorial(int n) {
if (n == 0)
return 1;
return n * factorial(n - 1);
}
Citations
🔗 View other articles about C Programming:
https://savanka.com/category/learn/c-programming/
🔗 External C Documentation:
https://www.w3schools.com/c/