1、一维数组
定义一个指针P
赋值p=&a[0]
a+i=&a[i]=p+i
*(a+i)=a[i] 仅当p指向数组的首地址时,指针下标表示法引用数组元素。p[i]=*(p+i)=a[i]
2、二维数组
(1)行指针。
定义格式:类型关键字 (*p)[常量N]
例如:int (*p)[4]表示定义了一个可指向4个整型数的一维数组的指针p(常量N规定了行指针所指向的一维数组的长度,不可省略)
初始化方法:p=a或p=a[0]。其中a表示二维数组的首地址相当于&a[0][0]。而a[0]表示二维数组时为a[0]+0,即&a[0][0]
用行指针表示二维数组a[i][j]各等价形式:
p[i][j]
*(p[i]+j)
*(*(p+i)+j)
(*(p+i)[j])
(2)列指针
定义格式:和普通变量指针定义格式相同。
例如;int *p表示定义了一个列指针p
初始化方法:p=a[0]或p=*a参照行指针初始化时的解释。
用列指针表示二维数组a[i][j]的各等价形式:
*(p+i*n+j)
p[i*n+j]
注意:不能用p[i][j]表示a[i][j].实际上通过列指针引用二维数组a[i][j],后可将二维数组看成一个有m行*n列个元素组成的一维数组。而p[i][j]表示的是一个二维数组。