# Overview of Functions

## Introduction

Functions are an essential concept in C programming, allowing you to break down a program into smaller, manageable pieces of code. A function is a self-contained block of code that performs a specific task. Understanding the basics of functions is crucial for writing modular and readable C code.

## Function Declaration

The syntax for declaring a function in C is as follows:

```c
returnType functionName(parameters) {
    // Function body
}
```

* `returnType`: Specifies the type of data the function will return (e.g., `int`, `void`).
* `functionName`: The name of the function.
* `parameters`: Input values that the function accepts (optional).

## Example Function

```c
#include <stdio.h>

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

int main() {
    // Function call
    int result = add(3, 5);

    // Display the result
    printf("Sum: %d\n", result);

    return 0;
}

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

In this example, the function `add` takes two parameters (`a` and `b`) and returns their sum.

## Function Call

To use a function, you need to call it within the program. The syntax for calling a function is:

```c
returnType result = functionName(arguments);
```

## Return Statement

The `return` statement is used to send the result back to the calling code. It also terminates the execution of the function.

```c
return expression;
```

## Function Prototypes

Function prototypes provide a declaration of the function before its actual definition. They are usually placed at the beginning of the program or in a header file.

```c
returnType functionName(parameters);
```

## Function Parameters

Parameters are the input values that a function accepts. They are declared in the function declaration and used in the function body.

```c
int multiply(int x, int y) {
    return x * y;
}
```

## Void Functions

A function with a `void` return type does not return any value. It is typically used for tasks that don't produce a result.

```c
void greet() {
    printf("Hello!\n");
}
```

## Scope of Variables

Variables declared within a function have local scope, meaning they are accessible only within that function.

```c
int globalVariable = 10; // Global variable

void exampleFunction() {
    int localVariable = 5; // Local variable
    printf("Global Variable: %d\n", globalVariable);
    printf("Local Variable: %d\n", localVariable);
}
```

Understanding the basics of functions is a foundational step in becoming proficient in C programming. As you gain more experience, you'll discover advanced concepts like function pointers, recursion, and variadic functions. If you have specific questions or if there are additional topics you'd like to explore, feel free to ask!
