一个数组的元素值为指针则是指针数组。
指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。
指针数组说明的一般形式为:
类型说明符 *数组名[数组长度]
其中类型说明符为指针值所指向的变量的类型。
例如: int *pa[3];
表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量。
v不要把&a[i]简单的理解为a[i]的物理地址,因为并不存在a[i]这个变量。它只是一种地址的计算方法,能得到第i行的地址。
v&a[i]和a[i]的值是一样的,但它的含义却不同。
&a[i]或a+i指向行,而a[i]或*(a+i)指向列。当下标j=0时,&a[i]和a[i]+j的值相等。*(a+i)只是a[i]的另一种表示形式。在二维数组中,a+i=a[i]=*(a+i)=&a[i]=&a[i][0]即它们的地址值是相等的。
uint a[5][10]
与 int (*p)[5];
二维数组名是一个指向有10个元素的一维数组的指针常量
up=a+i
使 p指向二维数组的第i行
*(*(p+i)+j) Ûa[i][j]
u二维数组形参实际上是一维数组指针变量,
即 int x[ ][10] Ûint (*x)[10]
变量定义(不是形参)时两者不等价,系统只给p分配能保存一个指针值的内存区(一般2字节);而给a分配2*5*10字节的内存区