For better understanding of arguments and return type in functions, user-defined functions can be categorised as:
- Function with no arguments and no return value
- Function with no arguments and return value
- Function with arguments but no return value
- Function with arguments and return value.
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.
// 1.program to check whether a number entered by user is prime or not // 2.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
// 1.program to check whether a number entered by user is prime or not // 2.using function with no arguments but having return value #include <stdio.h> 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
// 1.Program to check whether a number entered by user is prime or not // 2.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 = 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
// 1.Program to check whether a number entered by user is prime or not // 2.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 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.