C Programming Functions
Function in programming is a segment that groups a number of
program statements to perform specific task.
A C program has at least one function main( ). Without main() function, there is technically no C program.
Types of C functions
Basically, there are two types of functions in C on basis of
whether it is defined by user or not.
·
Library function
·
User defined function
Library function
Library functions are the in-built function in C programming
system. For example:
- The execution of every C program starts from this main() function.
- prinf() is used for displaying
output in C.
- scanf() is used for taking input
in C.
User defined function
C provides programmer to define their own function according to
their requirement known as user defined functions. Suppose, a programmer wants
to find factorial of a number and check whether it is prime or not in same
program. Then, he/she can create two separate user-defined functions in that
program: one for finding factorial and other for checking whether it is prime
or not.
How user-defined function works in C
Programming?
#include
<stdio.h>
void
function_name(){
................
................
}
int
main(){
...........
...........
function_name();
...........
...........
}
As mentioned earlier, every C program begins from main() and program starts executing the codes inside main() function. When the control of program reaches to function_name() inside main() function. The control of program jumps to void function_name() and executes the codes inside it. When, all the
codes inside that user-defined function are executed, control of the program
jumps to the statement just after function_name() from where it is called. Analyze the figure below for
understanding the concept of function in C programming. Visit this page to
learn in detail about user-defined functions.
Remember, the function name is an identifier and should be unique.
Advantages of user defined functions
1.
User defined functions
helps to decompose the large program into small segments which makes
programmar easy to understand, maintain and debug.
2.
If repeated code occurs
in a program. Function can be used to include those codes and execute when
needed by calling that function.
3.
Programmar working on
large project can divide the workload by making different functions.
C Programming User-defined functions
Example of user-defined function
Write a C program to add two integers. Make a function add
to add integers and display sum
in main()
function.
/*Program to demonstrate the working of user defined function*/
#include <stdio.h>
int add(int a, int b); //function prototype(declaration)
int main(){
int num1,num2,sum;
printf("Enters two number to add\n");
scanf("%d %d",&num1,&num2);
sum=add(num1,num2); //function call
printf("sum=%d",sum);
return 0;
}
int add(int a,int b) //function declarator
{
/* Start of function definition. */
int add;
add=a+b;
return add; //return statement of function
/* End of function definition. */
}
Function prototype(declaration):
Every function in C programming should be declared before they are
used. These type of declaration are also called function prototype. Function
prototype gives compiler information about function name, type of arguments to
be passed and return type.
Syntax
of function prototype
return_type function_name(type(1) argument(1),....,type(n) argument(n));
In the above example,int add(int a, int b);
is a function prototype which provides following information to
the compiler:
1.
name of the function is add()
2.
return type of the function is int
.
3.
two arguments of type int
are passed to function.
Function prototype are not needed if user-definition function is
written before main()
function.
Function call
Control of the program cannot be transferred to user-defined
function unless it is called invoked).
Syntax
of function call
function_name(argument(1),....argument(n));
In the above example, function call is made using statement add(num1,num2);
from main()
. This
make the control of program jump from that statement to function definition and
executes the codes inside that function.
Function definition
Function definition contains programming codes to perform specific
task.
Syntax of function definition
return_type function_name(type(1) argument(1),..,type(n) argument(n))
{
//body of function
}
Function definition has two major components:
1.
Function declarator
Function declarator is the first line of function definition. When
a function is invoked from calling function, control of the program is
transferred to function declarator or called function.
Syntax of function declarator
return_type function_name(type(1) argument(1),....,type(n) argument(n))
Syntax of function declaration and declarator are almost same
except, there is no semicolon at the end of declarator and function declarator
is followed by function body.
In above example, int
add(int a,int b)
in line
12 is a function declarator.
2.
Function body
Function declarator is followed by body of function which is
composed of statements.
Passing arguments to functions
In programming, argument/parameter is a piece of data(constant or
variable) passed from a program to the function.
In above example two variable, num1 and num2 are passed to
function during function call and these arguments are accepted by arguments a
and b in function definition.
Arguments that are passed in function call and arguments that are
accepted in function definition should have same data type. For example:
If argument num1 was of int type and num2 was of float type then, argument variable a should be of type int and b should be of type float,i.e., type of
argument during function call and function definition should be same.
A function can be called with or without an argument.
Return Statement
Return statement is used for returning a value from function
definition to calling function.
Syntax
of return statement
return (expression);
OR
return;
For example:
return;
return a;
return (a+b);
In above example, value of variable add in add()
function is returned and that value is stored in variable sum in main()
function. The data type of expression in return statement should
also match the return type of function.
Types of User-defined Functions in C
Programming
For better understanding of arguments and return in functions,
user-defined functions can be categorised as:
Let's take an example to find whether a number is prime or not
using above 4 cateogories of user defined functions.
Function with no
arguments and no return value.
/*C
program to check whether a number entered by user is prime or not using
function with no arguments and no return value*/
#include <stdio.h>
void prime();
int main(){
prime(); //No argument is passed to prime().
return 0;
}
void prime(){
/*
There is no return value to calling function main(). Hence, return type of
prime() is void */
int num,i,flag=0;
printf("Enter positive integer enter to check:\n");
scanf("%d",&num);
for(i=2;i<=num/2;++i){
if(num%i==0){
flag=1;
}
}
if (flag==1)
printf("%d is not
prime",num);
else
printf("%d is
prime",num);
}
Function prime() is used for asking user
a input, check for whether it is prime of not and display it accordingly. No
argument is passed and returned form prime() function.
Function with no
arguments but return value
/*C
program to check whether a number entered by user is prime or not using
function with no arguments but having return value */
#include <stdio.h>
int input();
int main(){
int num,i,flag;
num=input(); /* No argument is passed to input() */
for(i=2,flag=i;i<=num/2;++i,flag=i){
if(num%i==0){
printf("%d is not
prime",num);
++flag;
break;
}
}
if(flag==i)
printf("%d is
prime",num);
return 0;
}
int input(){ /* Integer value is returned from input() to calling function */
int n;
printf("Enter positive enter to check:\n");
scanf("%d",&n);
return n;
}
There is no argument passed to input() function But, the value of n is returned from input() to main() function.
Function with
arguments and no return value
/*Program
to check whether a number entered by user is prime or not using function with
arguments and no return value */
#include <stdio.h>
void check_display(int n);
int main(){
int num;
printf("Enter positive enter to check:\n");
scanf("%d",&num);
check_display(num); /*
Argument num is passed to function. */
return 0;
}
void check_display(int n){
/*
There is no return value to calling function. Hence, return type of function is
void. */
int i,flag;
for(i=2,flag=i;i<=n/2;++i,flag=i){
if(n%i==0){
printf("%d is not
prime",n);
++flag;
break;
}
}
if(flag==i)
printf("%d is
prime",n);
}
Here, check_display() function is used for
check whether it is prime or not and display it accordingly. Here, argument is
passed to user-defined function but, value is not returned from it to calling
function.
Function with argument
and a return value
/*
Program to check whether a number entered by user is prime or not using
function with argument and return value */
#include <stdio.h>
int check(int n);
int main(){
int num,num_check=0;
printf("Enter positive enter to check:\n");
scanf("%d",&num);
num_check=check(num); /* Argument num is passed to check() function. */
if(num_check==1)
printf("%d in not
prime",num);
else
printf("%d is prime",num);
return 0;
}
int check(int n){
/*
Integer value is returned from function check() */
int i;
for(i=2;i<=n/2;++i){
if(n%i==0)
return 1;
}
return 0;
}
Here, check() function is used for checking whether a number
is prime or not. In this program, input from user is passed to function check() and integer value is returned from it. If input
the number is prime, 0 is returned and if number is not prime, 1 is returned.