Когда вы берете адреса a0
и a1
для заполнения args
, вы получаете двойной указатель. Когда вы рассчитываете выход, вы разыменовываете только один раз. Есть два способа исправить это, чтобы получить желаемый результат. Вы можете изменить
args[0]=(void *)&a0;
до
args[0]=(void *)a0;
и изменить
args[1]=(void *)&a1;
до
args[1]=(void *)a1;
так что args
содержит одиночные указатели, ИЛИ вы можете изменить
fprintf(stderr,"assigned %c %c\n",*a0,*((char *)args[0]));
до
fprintf(stderr,"assigned %c %c\n",*a0,**((char **)args[0]));
и изменить
fprintf(stderr,"assigned %d %d \n",*a1,*((int *)args[1]));
до
fprintf(stderr,"assigned %d %d \n",*a1,**((int **)args[1]));
для двойного разыменования args
во время отображения.