Functions in C are essential building blocks that allow you to organize your code into reusable modules. They enable you to break down complex problems into smaller, manageable parts, making your code more readable, maintainable, and reusable. This guide will walk you through the basics of C functions, including how to declare, define, and use them in your programs. #### Table of Contents 1. What is a Function? 2. Declaring and Defining Functions 3. Function Parameters and Return Values 4. Function Prototypes 5. Types of Functions - Library Functions - User-Defined Functions 6. Examples ### 1. What is a Function? A function is a self-contained block of code that performs a specific task. In C, functions help organize the code, making it modular. A function can take inputs (parameters), process them, and return a result. ### 2. Declaring and Defining Functions A function declaration, also known as a function prototype, provides the compiler with the name of the function, its return type, and its parameters. A function definition, on the other hand, provides the actual implementation of the function. **Function Declaration Syntax:** ```c return_type function_name(parameter_type1 parameter1, parameter_type2 parameter2, ...); ``` **Function Definition Syntax:** ```c return_type function_name(parameter_type1 parameter1, parameter_type2 parameter2, ...) { // Function body // Code to be executed return return_value; } ``` **Example:** ```c #include // Function declaration (prototype) int add(int a, int b); int main() { int result = add(5, 3); printf("The sum is: %d\n", result); return 0; } // Function definition int add(int a, int b) { return a + b; } ``` In this example, the `add` function is declared before it is used in the `main()` function, and then it is defined after `main()`. ### 3. Function Parameters and Return Values Functions in C can take parameters (inputs) and return a value. The parameters allow the function to receive data from the caller, while the return value allows the function to send data back to the caller. **Example with Parameters and Return Value:** ```c #include // Function that calculates the square of a number int square(int num) { return num * num; } int main() { int number = 4; int result = square(number); printf("The square of %d is: %d\n", number, result); return 0; } ``` In this example, the `square` function takes an integer as a parameter and returns the square of that number. ### 4. Function Prototypes A function prototype is a declaration of a function that specifies the function's name, return type, and parameters, but not the body. It's usually placed at the beginning of the program or in a header file. Function prototypes are essential for functions that are defined after the `main()` function or in separate files. **Example of a Function Prototype:** ```c #include // Function prototype float multiply(float x, float y); int main() { float result = multiply(2.5, 4.2); printf("The product is: %.2f\n", result); return 0; } // Function definition float multiply(float x, float y) { return x * y; } ``` In this example, the function prototype `float multiply(float x, float y);` allows the `main()` function to call `multiply()` even though its definition comes later in the code. ### 5. Types of Functions There are two main types of functions in C: library functions and user-defined functions. #### Library Functions Library functions are built into C and are available through standard libraries like ``, ``, ``, etc. Examples include `printf()`, `scanf()`, `sqrt()`, and `malloc()`. **Example:** ```c #include #include int main() { double num = 16.0; double result = sqrt(num); printf("The square root of %.2f is: %.2f\n", num, result); return 0; } ``` #### User-Defined Functions User-defined functions are created by the programmer to perform specific tasks. These functions help to break down the program into smaller, manageable pieces. **Example:** ```c #include // User-defined function to calculate the area of a rectangle int rectangle_area(int length, int width) { return length * width; } int main() { int length = 10; int width = 5; int area = rectangle_area(length, width); printf("The area of the rectangle is: %d\n", area); return 0; } ``` ### 6. Examples **Example 1: Function with No Parameters and No Return Value** ```c #include // Function definition void greet() { printf("Hello, World!\n"); } int main() { greet(); // Function call return 0; } ``` In this example, the `greet()` function does not take any parameters and does not return a value. **Example 2: Function with Parameters and No Return Value** ```c #include // Function definition void print_sum(int a, int b) { printf("The sum of %d and %d is: %d\n", a, b, a + b); } int main() { print_sum(7, 5); return 0; } ``` In this example, the `print_sum()` function takes two parameters but does not return a value. **Example 3: Recursive Function** ```c #include // Function to calculate factorial of a number int factorial(int n) { if (n == 0 || n == 1) { return 1; } else { return n * factorial(n - 1); } } int main() { int num = 5; int result = factorial(num); printf("Factorial of %d is: %d\n", num, result); return 0; } ``` In this example, the `factorial()` function is a recursive function that calls itself to calculate the factorial of a number. ### Conclusion Functions are a fundamental part of C programming, allowing you to organize code into reusable, modular pieces. Understanding how to declare, define, and use functions, as well as the different types of functions available, will greatly enhance your ability to write efficient and maintainable code. Whether using simple functions to perform basic tasks or more complex functions like recursion, mastering functions is key to becoming proficient in C programming.