Types of User-defined Functions in C Programming

For better understanding of arguments and return type 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 categories 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 
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 
int input();
int main(){
 int num,i,flag = 0;
 num=input(); /* No argument is passed to input() */
 for(i=2; i<=num/2; ++i){
 if(num%i==0){
 flag = 1;
 break;
 }
 }
 if(flag == 1)
 printf("%d is not prime",num);
 else
 printf("%d is prime", num);
 return 0;
}
int input(){ /* Integer value is returned from input() to calling function */
 int n;
 printf("Enter positive integer 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 
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 = 0;
for(i=2; i<=n/2; ++i){
 if(n%i==0){
 flag = 1;
 break;
 }
 }
 if(flag == 1)
 printf("%d is not prime",n);
 else
 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 
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 is 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.

Comments