总共循环了3次,即i=0,1,2时,运行printf("%d,",*ptr++);你应该看错了i的赋值范围。
printf("%d",*ptr++)总共只执行了3次,怎么会有四个输出呢。第一次印出a[0],然后a[1],再a[2]。