In this tutorial, you will learn everything about functions in the C language with the help of simple and easy examples. This tutorial will guide you on how to define a function and various ways to call a function.
The function is an elementary and essential part of C programming. In the case of large programs, writing and management of the codes become complicated. Moreover, we have to perform similar jobs again and again for which a common set of instructions are used. To solve this problem, the function has been introduced.
Functions play a vital role in all programming languages because of the following fair reasons
A. Function enhances the readability of code.
B. Reusability of the code is the vital achievement of functions in C.
C. Reduces redundancy of code by avoiding rewriting the same code at multiple locations.
D. Functions enable easy debugging as errors are easy to trace due to modularity.
E. The size and complexity of code are lessened since function calls replace the duplicate code block.
Functions are basically of two types:
The Standard Library function means a pre-written set of codes by the compiler to perform specific tasks. These are the built-in functions that are defined already in the header files. For example scanf
to store the input data and printf
to display something are the standard library functions defined in the header file stdio.h
. Normally all input and output operations including mathematical ones are implemented by the library functions. Whereas, user-defined functions are written by the programmers and used whenever needed in the course of the program.
A function in a C program becomes complete only when these three important aspects are specified properly. They are:
Function Declaration is always a better practice in C language, as it gives a clue to the compiler a function will be used in the program later. Function declaration gives information like the name of the function, the number of parameters used in the function, and the type of function to the compiler. An important point to be considered while declaring a function is that it must be declared globally, which means outside the main() function.
A function declaration can be perceived as an announcement to the compiler that in the future a function will be used in the program. Hence it doesn't have function body.
The syntax of the function declaration is :
return_type function_name ( data_type parameter(s));
The basic syntax of the function definition in c language is given below.
return_type function_name ( data_type arg(s))
{
//function body with C statements
}
The components of the above function definition are tabulated below.
Components | Description |
---|---|
return_type | defines the data type( int, float, char) of value to be returned. Optional |
function_name | Should be a valid identifier. (refer rules of identifiers) |
Parameter(s) | Used to pass input values to the functions. Optional |
function _body> | Valid set of C statements enclosed in braces {} |
You have to write the codes inside the body of any function to define it. Suppose we want to form a simple function 'show', whose job is to print 'hello'. In this case, you are free to define the function 'show' anywhere inside the program like
void show()
{
printf("hello");
}
For functions working with variables, the definition is like as below
float area(int r)
{
pi=3.14;
a = pi*r*r;
return(a);
}
In this example, we have defined a function to calculate the area of a circle. This function remains as a script and does not execute until a function call is made. Hence is called a function definition.
Like function definition, the function call is another important aspect of function. After defining the function properly, we need to call the function to do the job, it is designed for. To do this we have to just write the name of the function and () followed by a semicolon. The syntax is :
function_name(arg(s));
In c we can make a function call in four different ways which are listed below and its simple example follows.
Observe the below example to calculate the area of a circle in these four different aspects :
#include<stdio.h>
void area() {
float a, pi;
int r = 10;
pi = 3.14;
a = pi * r * r;
printf("Area of Circle is : %f\n", a);
}
int main() {
area();
}
Output:
Area of Circle is : 314.000000
When you observe the above program you can find the following:
#include<stdio.h>
float area() {
float a, pi;
int r = 10;
pi = 3.14;
a = pi * r * r;
return (a);
}
int main() {
printf("Area of Circle is : %f\n", area());
}
Output:
Area of Circle is : 314.000000
Here in this program, you can find the following:
#include<stdio.h>
area(int r) {
float a, pi;
pi = 3.14;
a = pi * r * r;
printf("Area of Circle is : %f\n", a);
}
int main() {
area(10);
}
Output:
Area of Circle is : 314.000000
Here in this program, you can find the following difference from the previous one:
#include<stdio.h>
float area() {
float a, pi;
int r = 10;
pi = 3.14;
a = pi * r * r;
return (a);
}
int main() {
float arc;
arc = area();
printf("Area of Circle is : %f\n", arc);
}
Output:
Area of Circle is : 314.000000
In the above code snippet, you can find the following
Let’s learn the overall working of the function and execution sequence.
In C, the execution of a program starts with the main() function where the function call is residing. When the compiler comes across a function call, the control will shift to the corresponding function definition where it performs some task designed for it. The final result will be returned to the function call when it encounters a return statement. If not it outputs the result in the function itself and immediately terminates the function to switch the control back to the main() function.
The return statement in the C language returns a value to the calling function by terminating the execution of its corresponding function. To return a value we must declare a function with any of the valid data types unless can keep it as void. In our previous example, the value of a is returned to the main function and is assigned to the variable arc which is visualized below.