Array Circular Shift

Given an array and a number n, circular shift the array to right by n positions. Use absolutely no temporary storage.

void ArrayCircularShift(int *arrint arr_sizeint n)
{
    Reverse(arr, 0 , arr_size - 1);
    Reverse(arr, 0, n - 1);
    Reverse(arrnarr_size - 1);
}
 
void Reverse(int *arrint startint end)
{
    while (start < end)
    {
        arr[start] = arr[start] ^ arr[end];
        arr[end] = arr[start] ^ arr[end];
        arr[start] = arr[start] ^ arr[end];
        start++;
        end--;
    }
}