指针数组:是由若干个具有相同存储类型和数据类型的指针变量构成的集合。
一般形式:<存储类型> <数据类型> *<指针数组名>【<大小>】
指针数组名表示 该指针数组的起始地址
声明一个指针数组,例如:
double *pa[2],a[2][3];
pa[0]=a[0]; //等价于pa[0]=&a[0][0] 此时pa[0]指向了一维数组的a[0]的第一个元素a[0][0]
pa[1]=a[1]; //等价于pa[1]=&a[1][0] 此时pa[1]指向了一维数组的a[1]的第一个元素a[1][0]
指针数组找数据过程:
代码例子:
int a[2][3]={{2,9,4},{3,5,8}}; int *p[2]; p[0]=a[0]; p[1]=a[1]; printf("%d\t%d\t%d\n",*(*(p+0)+0),*(*(p+0)+1),*(*(p+0)+2)); printf("%d\t%d\t%d\n",*(*(p+1)+0),*(*(p+1)+1),*(*(p+1)+2));
int a[2][3]={{1,4,5},{2,3,6}}; int *p[2]={a[0],a[1]}; int i,j,sum=0,sum1=0; for(i=0;i<2;i++){ for(j=0;j<3;j++){ sum+=*(*(a+i)+j); total+=*(*(p+i)+j); } } printf("%d",sum1); printf("%d",sum);