C Functions: The Complete Guide for Beginners 2021

C Functions: The Complete Guide for Beginners 2021

In this tutorial, you will learn about functions in C programming (both user-defined and standard library functions). You’ll also find out why functions are employed in programming.

A function is a code block that accomplishes a certain task.

Assume you need to write a program that will draw a circle and color it. To fix this problem, you can build two functions:

  • function to make a circle
  • a color function should be created

Our program is simple to comprehend and reuse since it breaks down a difficult problem into smaller bits.

Functions Type:

  • Standard library functions
  • User-defined functions

Standard library functions

In C programming, standard library functions are built-in functions.

In header files, these functions are declared. As an example,The printf() function is a standard library function that displays formatted output (display output on the screen). The stdio.h header file defines this function.

  • To utilize the printf() function, we must use #include stdio.h> to include the stdio.h header file.
  • The sqrt() function calculates a number’s square root. In the math.h header file, the function is defined.

To learn more, go to C programming’s standard library functions.

C User-defined functions

With the help of an example, you will learn how to build user-defined functions in C programming in this article.

A function is a code block that accomplishes a certain task.

You can define functions in C according to your needs. User-defined functions are what they’re called. Consider the following scenario:

Assume you need to draw a circle and color it in different ways depending on the radius and hue. To fix this problem, you can build two functions:

createCircle() is a function that creates a circle.
color() is a function that allows you to change the color

You can also develop your own functions based on your requirements. User-defined functions are functions that are created by the user.

What is the procedure for using a user-defined function?

The main() function is where a C program starts to run.

When the compiler sees functionName();, the program’s control is passed to

The compiler then begins running the code contained within functionName ().

Once the code inside the function declaration is executed, the program’s control returns to the main() function.

It’s important to remember that function names are identifiers and should be unique.

This is merely a summary of user-defined functions. For further information, go visit the following pages:

  • User-defined Function in C programming
  • Types of user-defined Functions

The benefits of a user-defined function

  • It will be simpler to comprehend, maintain, and troubleshoot the application.
  • Codes that can be reused in different applications
  • A big program can be broken down into smaller chunks. As a result, a huge project might be split among several programmers.

User-defined function example:

Here’s an example of how to multiply two integers. To accomplish this, we’ve constructed a user-defined addNumbers function ().

Function prototype

A function prototype is merely a function declaration that provides the name, parameters, and return type of the function. It is missing the function body.

A function prototype tells the compiler that the function will be utilized later in the program.

Function prototype syntax

The function prototype int addNumbers(int a, int b); in the preceding example provides the compiler with the following information:

  • addNumbers is the name of the function ()
  • The function’s return type is int.
  • The function is called with two int arguments.

If the user-defined function is defined before the main() function, the function prototype is not required.

Calling a function

By calling the user-defined function, control of the program is given to it.

Function call syntax

The function is called in the previous example using the main() function’s addNumbers(n1, n2); line.

Function definition

The definition of a function is a chunk of code that performs a specified activity. In this case, we’ll add two numbers and return the result.

Function description syntax

The control of the program is transferred to the function definition when a function is invoked. The compiler then begins executing the code contained within a function’s body.

Invoking a function with parameters
The variable provided to the function is referred to as an argument in programming. Two variables, n1 and n2, are provided to the function call in the example above.

The provided arguments in the function declaration are accepted by the parameters a and b. These arguments are known as the function’s formal parameters.

Otherwise, the compiler will throw an error if the type of arguments given to a function and the formal parameters do not match.
If n1 is a char type, a should be a char type as well. If n2 is a float, variable b should be a float as well.

It is also possible to invoke a function without providing an argument.

Return Statement

The return statement marks the end of a function’s execution and returns a value to the caller function. After the return statement, program control is passed to the calling function.

The value of the result variable is returned to the main function in the example above. This value is assigned to the sum variable in the main() function.

Return Statement Syntax

For example,

The return type stated in the function prototype and function definition must match the type of value returned by the function.

To understand more about passing arguments and returning value from a function, go to this page.

C Functions Types

In C programming, there are several different types of user-defined functions.

In this course, you’ll learn about various techniques of utilize functions to solve the same problem.

These four applications determine whether or not the integer input by the user is a prime number.

All of the programs below provide the same result, and in each case, we’ve generated a user-defined function. In each case, though, we have taken a different method.

No arguments passed and no return value example:

The checkPrimeNumber() function accepts user input, determines whether it is a prime number, and shows the result on the screen.

The empty parenthesis in the main() method’s checkPrimeNumber(); statement indicate that no argument is supplied to the function.

The function’s return type is void. As a result, the function returns no value.

No arguments passed but a return value example:

The n = getInteger(); statement’s empty parenthesis indicate that no parameter is supplied to the method. The value returned by the function is then assigned to the variable n.

The getInteger() function receives the user’s input and returns it. The main() method contains the code for determining if an integer is prime or not.

Argument passed but no return value example:

The checkPrimeAndDisplay() function receives the integer value given by the user.

The checkPrimeAndDisplay() function examines whether the provided input is a prime number and displays the appropriate message if it is not.

Argument passed and a return value example:

The checkPrimeNumber() function is supplied the user’s input.

The checkPrimeNumber() function determines whether or not the argument is prime.

The function returns 0 if the provided input is a prime number. The function returns 1 if the provided input is not a prime number. The flag variable receives the return value.

The main() function prints an appropriate message depending on whether flag is 0 or 1.

Which method is the most effective?

It all depends on the problem you’re attempting to address. In this scenario, supplying an input and having the function return a value (example 4) is preferable.

A function must complete a certain task. The checkPrimeNumber() function does not accept user input and does not display the correct message. It solely determines whether or not a number is prime.

C Recursion Functions

With the help of an example, you will learn how to build recursive functions in C programming in this article.

A recursive function is a function that calls itself. Recursion is the name for this approach.

What is recursion and how does it work?

The recursion will continue until a condition that prevents it is met.
To avoid infinite recursion, use an if…else statement (or a similar approach) with one branch making the recursive call and the other branch not.

Example: Using Recursion to Calculate the Sum of Natural Numbers


The sum() function is initially called from the main() function with number as an argument.

Assume that the initial value of n inside sum() is 3. 2 is provided to the sum() function during the next function call. This technique is repeated until n equals 0.

When n equals 0, the if condition fails, and the otherwise part is executed, returning the sum of integers to the main() function in the end.

Advantages and Disadvantages of Recursion

The use of recursion in a program makes it more elegant. If performance is critical, however, loops should be used instead of recursion, which is normally much slower.

Recursion, on the other hand, is a crucial idea. It’s very common in data structures and algorithms. Recursion is commonly used in situations like tree traversal, for example.

C Storage Class Function

You will learn about the scope and lifetime of local and global variables in this course. Static and register variables will also be covered.

In C programming, every variable has two properties: type and storage class.

A variable’s data type is referred to as type. A variable’s scope, visibility, and lifetime are all determined by its storage class.

There are four different types of storage classes:

  • automatic
  • external
  • static
  • register

Local Variable

Automatic or local variables are variables specified within a block. Local variables only exist within the block in which they are declared.

Let’s have a look at an example.

When you run the above application, you will see an error message that says “undeclared identifier i.” Because I is declared within the for loop block, this is the case. It’s undeclared outside of the block.

Let’s look at another example.

n1 is local to main() and n2 is local to func in the example above ().

This means you can’t use the n1 variable in func() because it’s only available in main (). Similarly, you can’t access the n2 variable from main() because it’s only available in func ().

Global Variable

External or global variables are variables that are declared outside of all functions. They can be accessed from any of the program’s functions.

Global Variable Example:


Assume that file1 declares a global variable. The compiler will complain if you try to use that variable in a separate file, file2. The keyword extern is used in file2 to indicate that the external variable is declared in another file, which solves the problem.

Register Variable

Register variables are declared using the register keyword. Local variables were expected to be quicker than register variables.

Modern compilers are excellent at code optimization, therefore there’s a slim likelihood that using register variables will speed up your software.

Register variables aren’t useful unless you’re working on embedded devices and know how to optimize code for a specific purpose.

Static Variable

The static keyword is used to declare a static variable. As an example;

A static variable’s value is preserved until the end of the program.

Example of Static Variable



The value of c is set to 1 on the first function call. Its worth has risen by 5. The current value of c is 6, as shown on the screen.

c is not initialized to 1 again during the second function call. Because c is a static variable, this is the case. The value of c has been raised by 5. Its current value will be 11, as shown on the screen.


A function is a collection of statements that work together to complete a task. Every C program contains at least one function, main(), and even the simplest programs can specify more functions.

You can partition your code into different functions. It’s up to you how you divide your code into separate functions, but logically, each function should fulfill a specific duty.

The name, return type, and parameters of a function are all specified in a function declaration. The body of the function is defined by a function definition.

The C standard library includes a number of built-in functions that you can use in your program. Strcat(), for example, concatenates two strings, memcpy() copies one memory region to another, and many other procedures.

Related Articles


If you have any questions or suggestions about C Functions: The Complete Guide for Beginners 2021, please feel free to leave a comment below.

Leave a Comment