Methods of calling funcctions in C:
===================================
1) Call by value:
=================
In call by value, only the value will be passed.If any modification is done for the formal parameters within a function it does not reflect on the actual parameters.
2) Call by reference:
=====================
In pass by reference both, value and adddress of the variable will be passed. If any modification is done by a formal parameters within a function, it reflects on actual parameters.
3) Call by value_Result
=======================
4) Call by result
=================
5) Call by constatnt value
==========================
/* 1. Call by value*/
#include <stdio.h>
/* function declaration */
void swap(int x, int y);
/* function definition to swap the values */
void swap(int x, int y)
{
int temp;
temp = x; /* save the value of x */
x = y; /* put y into x */
y = temp; /* put temp into y */
return;
}
int main ()
{
/* local variable definition */
int a = 100;
int b = 200;
printf("Before swap, value of a : %d\n", a );
printf("Before swap, value of b : %d\n", b );
/* calling a function to swap the values */
swap(a, b);
printf("After swap, value of a : %d\n", a );
printf("After swap, value of b : %d\n", b );
printf("Did not swap. ");
return 0;
}
/* 2. Call by reference*/
#include <stdio.h>
#include <conio.h>
/* function definition to swap the values */
void swap(int *a, int *b)
{
int temp;
temp = *a; /* save the value of x */
*a = *b; /* put y into x */
*b = temp; /* put temp into y */
return;
}
int main ()
{
/* local variable definition */
int a = 100;
int b = 200;
printf("Before swap, value of a : %d\n", a );
printf("Before swap, value of b : %d\n", b );
/* calling a function to swap the values */
swap(&a, &b);
printf("After swap, value of a : %d\n", a );
printf("After swap, value of b : %d\n", b );
return 0;
}
/* 3. Call by value_result*/
#include <stdio.h>
#include <conio.h>
/* function declaration */
int area(int l, int w);
/* function definition to calculate the area */
int area(int l, int w)
{
return(l*w);
}
int main ()
{
/* local variable definition */
int l = 12;
int w = 5;
printf("area : %d\n", area(l,w) );
return 0;
}
/* 4. Call by result*/
#include <stdio.h>
#include <conio.h>
int a=3,b=5;
/* function definition to calculate the sum */
int sum()
{
return(a+b);
}
int main ()
{
/* local variable definition */
int result;
result=sum();
printf("Sum : %d\n", result );
return 0;
}
/* 5. Call by constatnt value*/
#include <stdio.h>
#include <conio.h>
/* function definition to calculate the area */
float area(const float pi, float r)
{
return(pi*r*r);
}
int main ()
{
/* local variable definition */
const float pi=3.14;
float r=2.5;
printf("Area : %.2f\n", area(pi,r) );
return 0;
}