Below is the program:
#include <stdio.h>
#include<stdlib.h>
int *glob_var;
int* copy(void *a,int size)
{
    int *t=(int *)calloc(1,sizeof(int));
    int i;
    int *glob_var=(int *)calloc(size,sizeof(int));
    printf("glob_var=%p\n",glob_var);
    printf("a=%p\n",a);
    t=glob_var;
    for(i=0;i<size;i++)
    {
        *glob_var=*(int *)a;
         glob_var++;
         (int *)a++;
        // printf("a=%p\n",a);
    }
    glob_var=t;
     for(i=0;i<10;i++)
    {
       printf("%d\t",*glob_var);
       glob_var++;
    }
glob_var=t;
printf("\n%p\n",glob_var);
return t;
}
int main() {
    // Write C code here
    int a=0x123456,i;
    int *var=(int *)calloc(10,sizeof(int));
    int *temp;
    temp=var;
    for(i=0;i<10;i++)
    {
        *var=i;
        var++;
    }
    var=temp;
    for(i=0;i<10;i++)
    {
       printf("%d\n",*var);
        var++;
    }
    var=temp;
    printf("var=%p\n",var);
    glob_var=copy(var,10);
    printf("%p\n",glob_var);
    for(i=0;i<10;i++)
    {
       printf("%d\t",*glob_var);
       glob_var++;
    }
    return 0;
}
However, the output I got is :
0       16777216        65536   256     1       33554432        131072  512     2       50331648
I was expecting:  0 1 2 3 4 5 6 7 8 9.
But, in the copy() function, if I replace (int *)a++; with a=(int *)a+1; it is working.
My question is: What is wrong with the current program?
 
    