Syntax:
function_type function_name(parameter_type parameter_name,parameter_type parameter_name){
function_body;
return function_type;
}
return will work for any function_type except void….void does not return any value but it returns..so we can use return keyword in void to exit but no value after return keyword in void method / function
Normally we have to declare function protoype if we add the calling function after the main function
#include<iostream>
using namespace std;
int maxs(int num1,int num2);//function prototype
int main(){
int a=100;
int b=200;
int retur;
retur=maxs(a,b);
cout<<"Max value is "<<retur;
return 0;
}
int maxs(int num1,int num2){
int result;
if(num1>num2){
result = num1;
}
else
result=num2;
return result;
}
We can also use without function prototype when main function is after the calling function
#include<iostream>
using namespace std;
int maxs(int num1,int num2){
int result;
if(num1>num2){
result = num1;
}
else
result=num2;
return result;
}
int main(){
int a=100;
int b=200;
int retur;
retur=maxs(a,b);
cout<<"Max value is "<<retur;
return 0;
}
We can also use function when there is not equal parameter is passing like
#include<iostream>
using namespace std;
int sum(int a, int b=3){
int result;
result=a+b;
return result;
}
int main(){
int x=10;
int y=5;
int folafol;
folafol=sum(x,y);
cout<<"Total value is: "<<folafol<<endl;//10+5=15 will show
folafol=sum(x);
cout<<"Total value is:"<<folafol<<endl;//10+3=13 will show
return 0;
}
One example below created by me:
#include<iostream>
using namespace std;
int zaki(int);
int diu(int);
int main()
{
int result1,r,result2,p;
r=10;
p=200;
//passing r
result1=zaki(r);
cout<<"Result 1 : "<<result1<<endl;
//passing p
result2=diu(p);
cout<<"Result 2 : "<<result2<<endl;
return 0;
}
int zaki(int res)
{
int mins;
if(res=10)
{
mins=100;
}
else
{
mins=20;
}
return mins;
}
int diu(int dhk)
{
int maxs;
if(dhk=2)
{
maxs=15;
}
else
{
maxs=19;
}
return maxs;
}
Another example
#include<iostream>
using namespace std;
void odd(int x);
void even(int x);
int main()
{
int i;
do{
cout<<"Enter your number(0 to exit) : ";
cin>>i;
odd(i);
}while(i!=0);
return 0;
}
void odd(int x){
if((x%2)!=0){
cout<<"It is odd \n";
}else{
even(x);
}
}
void even(int x){
if((x%2)==0)
{
cout<<"It is even \n";
}
else{
odd(x);
}
}
Recursive function: Factolrial
courtesy:cplusplus.com
//factorial calculator
#include<iostream>
using namespace std;
long factorial(long a)
{
if(a>1){
return(a*factorial(a-1));
}else{
return 1;
}
}
int main()
{
long number=9;
cout<<number<<"! = "<<factorial(number);
return 0;
}
Another one:
#include<iostream>
using namespace std;
void printmessage()
{
cout<<"Hello world! :D";
}
int main()
{
printmessage();
return 0;
}
C++ Functioon Call By Value
void swap(int x,int y){
int tempo;
tempo=x; //save value of x in tempo variable
x=y; //put value of y into x;
y=tempo; //put the value of tempo actually the value of x into y
return;
}
C++ Function call by Reference
#include<iostream>
using namespace std;
void swaps(int &x,int &y){
int tempo;
tempo=x;
x=y;
y=tempo;
return;
}
int main()
{
int a=10;
int b=20;
cout<<"before swap a: "<<a<<endl;
cout<<"before swap b: "<<b<<endl;
swaps(a,b);//calling swap function
cout<<"after swap a: "<<a<<endl;
cout<<"after swap b: "<<b<<endl;
return 0;
}
C++ Function call by Pointer
#include<iostream>
using namespace std;
void swaps(int *x,int *y){
int tempo;
tempo=*x;
*x=*y;
*y=tempo;
return;
}
int main()
{
int a=10;
int b=20;
cout<<"before swap a: "<<a<<endl;
cout<<"before swap b: "<<b<<endl;
swaps(&a,&b);//calling swap function
/*
&a is addressing the variable a and indicating thje poiter to variable a
&b is addressing the variable b and indicating the pointer to variable b
*/
cout<<"after swap a: "<<a<<endl;
cout<<"after swap b: "<<b<<endl;
return 0;
}