int a[10];
int *c;
c=&a[0] //&a[0]是指向数组第一个元素的指针
array[i]=*(array+i)
&array[i]=array+i=array[0]+i
--------------------------------------
--------------------------------------
int array[10];
int *ap=array+2; // ap指向array[2]
ap //&array[2]
*ap //*(array+2)
ap[0]=*(ap+0)=*ap //c语言的下标和简接访问一样
ap+6 //ap[2+6]=ap[8]
*ap+6 //array[2]+6
ap[6] //*(ap+6)
ap[-1] //上一个元素
int i[]={100,200,300,400,500};
int *pi=i; // pi指向i[0]=100的地址
*pi++ //*和++优先级相同,自右向左----->*pi++=*(pi++)----->*pi=100,输出100,然后pi指向下一个地址
*++pi //---->*(++pi)---->pi移到下一个单元----->输出300
++ *pi //---->300+1
[] 和 ∗ <script type="math/tex" id="MathJax-Element-2">*</script>等价
int i[7]={0,1,2,3,4,5,6}
int *ptr=i;
则:*(i+2)=i[2]=*(ptr+2)=ptr[2]
//二维数组
int j[2][3]={0,1,2,3,4,5}
=>
j[1][2]=*(*(j+1)+2)
j+1=*(j+1)=j[1]=>下一个一维数组的首地址(j和j+1都是指向包含10个元素的数组的指针)
*(j+1)+5=>一维数组的第5个元素
int (*p)[10] //避免使用
char *parr[4]={"Department","of","Information","Managment"}
//操作符 []和*
**parr=*parr[]=parr[][]