#include <stdio.h>
//函数遍历任何二维数组
void show(int *arr, int hang, int lie)
{
for(int i=0;i<hang;i++)
{
for(int j=0;j<lie;j++)
printf("%d ",arr[ i * lie +j ]);
printf("\n");
}
}
//函数遍历任何二维数组
void show2(int *arr, int hang, int lie)
{
//了解
int (*p)[lie] = (int (*)[lie])arr;
for(int i=0;i<hang;i++)
{
for(int j=0;j<lie;j++)
printf("%d ",p[i][j]);
printf("\n");
}
}
int main()
{
//数组指针 与 二维数组:
//二维数组:
int arr[2][3] = {1,2,3,4,5,6};
//数组指针: 含义: 一个指针 指向一个一维数组
int (*p)[3] = arr; // p = &arr[0];
printf("p=%p\n",p);
printf("&arr[0]=%p\n",&arr[0]);
printf(" arr =%p\n", arr);
printf(" arr[0]=%p\n", arr[0]);
//通过p遍历数组arr
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
printf("%d ",*(*(p+i)+j));
printf("\n");
}
//二维数组 展平遍历
int * q = (int*)arr;
for(int i=0;i<6;i++)
printf("%d ", *q++);
printf("\n");
show2((int*)arr, 2, 3);
return 0;
}