首先你声明了一个数组a[10],表示数组a有10个元素,其元素对应的下标分别是0~9
1、直接使用数组名a,表示数组第一个元素的地址;
2、*p = a,表示声明一个指针p,指向数组a的第一个元素的地址;(现在p和a都指向同一个地址)
3、a[p - a]等同于a[0],表示数组第一个元素;因为指针变量可以进行算术运算,p和a指向同一个地址,其相减的结果为0;
4、*(&a[i])等同于a[i];因为&a[i]表示数组第i个元素的地址,相当于是一个指向第i个元素的指针,在一个指针前面使用*号,表示指针指向该地址的值;
5、p[i]等同于a[i],请参考第一条;
6、*(&(a + i)),首先(a + i)表示指向i元素的指针,而&(a + i)表示指向指向i元素的指针的指针,所以*(&(a + i))表示指向i元素指针的值。
补充:*(a + i),这个表示数组第i个元素的值。
以上回答希望对你有所帮助,另外不足之处希望能相互讨论和学习。