因为p是个int* 而a是个char*p++一次移动4个字节,所以*p=*p+1在a数组的范围内修改了a[0]和a[4],i>1以后的都是越界操作于是最终输出Dhinb你用的什么编译器,像p=a这个在目前的编译器是通不过的
把int *p 换做char *p 就好了。至于为什么输出的是Dhinb,因为字符指针和整型指针跳转一次所移动的字节不同。具体多少字节卡你电脑的处理器是多少位的。
int 同char 的问题!