#include <stdio.h>
swap (int *, int *);
main()
{
    int a, b;
    printf("\nEnter value of a & b: ");
    scanf("%d %d", &a, &b);
    printf("\nBefore Swapping:\n");
    printf("\na = %d\n\nb = %d\n", a, b);
    swap(&a, &b);
    printf("\nAfter Swapping:\n");
    printf("\na = %d\n\nb = %d", a, b);
    getch();
}
swap (int *x, int *y)
{
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
}

 OUTPUT:

Enter value of a & b: 10 20

Before Swapping:

a = 10

b = 20

After Swapping:

a = 20

b = 10

The same program can be implemented using call by value, but there will be no change in the output. But in this program the values of a and b will successfully swapped. Refer an another example to implement the call by reference in Functions.