基本概念
一维数组
1.a[i]中,数组名a代表一维数组首地址
2.a[i]<->*(a+i)
二维数组
1.a[i][j]中,a[i]可以看作一维数组的数组名,即第i行一维数组首地址。例:a[i]等价于&a[i][0]。
2.a[i][j]<-> * (a[i]+j)<->* (* (a+i)+j)<-> * (* (a+i)+j)<->( *(a+i))[j]
行指针
int (*p)[4]; //是指向二维数组的行指针,它所指向的二维数组每行有4个元素
注意:必须显式指定指针变量所指向的一维数组的长度。
初始化方式:p = a; 或者 p = &a[0];
#include <stdio.h>
#define N 4
void InputArray (int (*p)[N],int m,int n);
void OutputArray (int (*p)[N],int m,int n);
int main()
{
int a[3][4];
printf("Input 3*4 numbers:\n");
InputArray (a,3,4); //可替换为*a,a[0],&a[0][0]
OutputArray (a,3,4);
re