有关数组的一个简单有关问题

有关数组的一个简单问题#include stdio.h#include stdlib.hmain(){static int a[]{1,3,5,7,9}int i,

有关数组的一个简单问题
#include <stdio.h>
#include <stdlib.h>
main()
{
  static int a[]={1,3,5,7,9};
  int i,*p;
  for(p=a,i=0;p+i<=a+4;p++,i++)
  printf("%4d",*(p+i));
  printf("\n");
  for(p=a+4,i=0;i<5;i++)
  printf("%4d",p[-i]);  
  printf("\n");
}

在这个程序中为什么说:
  printf("%4d",p[-i]);
这个语句与 
  printf("%4d“,*(p-i))等价 呢??? 求解释! 烦劳各位大侠了!~~

[解决办法]
p[-i]可以表示为*(p-i);其实,p-i就是指针p所指的位置向左偏移i个元素。
[解决办法]
http://blog.csdn.net/supermegaboy/article/details/4855027 内详
[解决办法]
p[i] 

=>>等效于:
*(p + i)

所以:

p[-i]
=>>
*(p + (-i));
也就是 *(p - i);
[解决办法]
如果楼主能明白p[i]和*(p+i)是等价的。那么就很容易明白p[-i]和*(p-i)是等价的了。p[-i]的意思就是将p的值减去i*4(因为是整型,4个字节).将这个结果指向的地址的值读出来。这和*(p-i)是完全一样的。
建议楼主还是看看指针和数组的基础知识吧。