这两句是等效的
int main(void)
{
int buf[2][3] = { {1,2,3},{4,5,6} };
//int*p[3];指针数组
int(*p)[3];//定义了一个指针,指向int [3]这种数据类型,指向二位数组的指针
p = buf;//p指向了二维数组中的第一行
p++;//指向了第二行
printf("%d\n",sizeof(p));
printf("%d,%d\n",p,p+1); //位移了1 * sizeof(int [3])
system("pause");
return 0;
}
int main(void)
{
//不允许使用数据下标,只能通过指向二位数组的指针求出数组中每行和每列的平均值
int buf1[3][5] = {{2,4,5,6,2},{2,3,4,5,6},{5,4,6,3,2}};
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d ",buf1[i][j]);
}
printf("\n");
}
printf("------------------------\n");
int(*a)[5];
a = buf1;
printf("%d ",a);
printf("%d ", &buf1[0][0]);
printf("%d ", *(a[2]));
printf("\n");
system("pause");
return 0;
}