指针:*p:值;p:址;元素:例:int a, a:值;&a:址。故*p=a;p=&a为赋值/址。
数组:例 a[10]:a为数组首地址,故p=a,a[0]为值,故p=&a[0],*p=a[0]为赋值/址。
数组元素(一维数组):例 a[10]:a为首地址,a+i为第i个元素的地址;故地址为:p+i=a+i=&a[i];传值为:*(p+i)=*(a+i)=a[i];p[i]=*(p+i)=a[i]。
二维数组:例(*p)[4]为指针数组;表示*p有四个元素,每个元素可指向一个一维数组,故此方法可以表示二维数组;*p[i]表示行首地址,相当于a[i];*p[i]+j表示第i行第j个元素的地址;*(*p[i]+j)表示第i行第j个元素的值;故二维数组用指针可表示为*(*p[i]+j)(因为p[i]=a[i]=a+i=p+i)。
补充:易混淆的几个与指针有关的表示方式:类型标识符 (*指针变量名)[长度](例如:int (*p)[4])表示二维数组行指针的表示方法;类型标识符 (*指针变量名)()(例如 int (*pf)())为指向函数的指针变量定义方法;数据类型 *函数名(形参表){函数体}为指针型函数,即返回值为指针型。