# C Program Swap Numbers in Cyclic Order Using Call by Reference

In this example, the three numbers entered by the user are swapped in cyclic order using call by reference.

To understand this example, you should have the knowledge of the following C programming topics:

## Program to Swap Elements Using Call by Reference

``````#include <stdio.h>
void cyclicSwap(int *a, int *b, int *c);
int main() {
int a, b, c;

printf("Enter a, b and c respectively: ");
scanf("%d %d %d", &a, &b, &c);

printf("Value before swapping:\n");
printf("a = %d \nb = %d \nc = %d\n", a, b, c);

cyclicSwap(&a, &b, &c);

printf("Value after swapping:\n");
printf("a = %d \nb = %d \nc = %d", a, b, c);

return 0;
}

void cyclicSwap(int *n1, int *n2, int *n3) {
int temp;
// swapping in cyclic order
temp = *n2;
*n2 = *n1;
*n1 = *n3;
*n3 = temp;
}
``````

Output

```Enter a, b and c respectively: 1
2
3
Value before swapping:
a = 1
b = 2
c = 3
Value after swapping:
a = 3
b = 1
c = 2
```

Here, the three numbers entered by the user are stored in variables a, b and c respectively. The addresses of these numbers are passed to the `cyclicSwap()` function.

``````cyclicSwap(&a, &b, &c);
``````

In the function definition of `cyclicSwap()`, we have assigned these addresses to pointers.

``````cyclicSwap(int *n1, int *n2, int *n3) {
...
}
``````

When n1, n2 and n3 inside `cyclicSwap()` are changed, the values of a, b and c inside `main()` are also changed.

Note: The `cyclicSwap()` function is not returning anything.