关于指针与数组表示

如题所述

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]表示的是一个二维数组。
温馨提示:答案为网友推荐,仅供参考
相似回答