#include <stdio.h>
void func(int p[][4])//形参代表指针变量
{
//按列打印二维数组
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d\n", *(*(p + j) + i));
}
}
}
int main()
{
int array[3][4] = { { 0, 1, 2, 3 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 } };
func(array);
printf("%d, %d, %d, %d, %d\n", array, *array, &array, &array[0][0], &array[0]);//全都一样
//array[0]不是一个变量,而是二维数组中第0行的首地址
printf("%d\n", array + 1); //第1行的首地址
printf("%d\n", array[0] + 1);//第0行第二个地址
//int* p = array; //指向一维数组的指针
int (*p)[4]; //变相的二级指针
p = array;
printf("%d\n", **(p +1));
/*for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d\n", array[j][i]);
}
}*/
return 0;
}