Sunday, 7 May 2017

Call by value Call by reference



Call by value

The call by value method of passing arguments to a function copies the actual value of an argument into the formal parameter of the function. In this case, changes made to the parameter inside the function have no effect on the argument.

By default, C programming language uses call by value method to pass arguments. In general, this means that code within a function cannot alter the arguments used to call the function. Consider the function swap() definition as follows.

Call by value

void swap(int *x,int *y)
{
      int tmp; tmp=*x;
      *x=*y;
      *y=tmp;

}

void main()
{

      int a = 10, b = 20;
      printf(“\n%d\t%d”, a, b);
      swap(a, b);
      printf(“\n%d\t%d”, a, b);

}

Call by reference

The call by reference method of passing arguments to a function copies the address of an argument into the formal parameter. Inside the function, the address is used to access the actual argument used in the call. This means that changes made to the parameter affect the passed argument.

To pass the value by reference, argument pointers are passed to the functions just like any other value. So accordingly you need to declare the function parameters as pointer types as in the following function swap(), which exchanges the values of the two integer variables pointed to by its arguments.

Call by Reference

void swap(int *x, int *y)
{
     int tmp; tmp = *x;
     *x = *y;
     *y = tmp;

}

void main()
{
      int a = 10, b = 20;
      printf(“\n%d\t%d”, a, b);
      swap(&a, &b);
      printf(“\n%d\t%d”, a, b);

}