int ch[10]={1,};
int* te=&ch[0];
printf("%d\n",te[-1]);
te++;
printf("%d\n",te[-1]);
第一次打印和第二次打印的值是否一致?
对于这个问题,首先要分析te指针指向的是ch这个内存块的首地址,所以对于te[-1]来说,由于-1这个数组值不存在,所以其内容应该是随机的。当te++,te指针指向的地址就变成当前首地址的下一个,此时te[-1]的地址实际上就变成了首地址,所以打印的结果应该为1。(te-1)++实际上就是te。