二维数组

数据存放
二维数组存放数据遵从“行优先”原则
例如一个arr[3][3]的二维数组,存放数据顺序如图
二维数组
初始化
int main()
{
int arr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int brr[3][4] = {1,2,3,4,5,6,7,8,9,10};//*****常用
int crr[][4] = {1,2,3,4,5,6,7,8,9,10};
}

数据类型
在一维数组中,int arr[4];
二维数组
arr指向数组首地址,数据类型为一个整型指针,arr+1同理;arr[0]指向数组的一个单元格,数据类型为整型,arr[0]+1同理;
如下图
二维数组
在一个二维数组中,intbrr[3][4];
二维数组
二维数组的每一行都可以看作是一个一维数组,brr指向数组首地址,即指向第一行一维数组的地址,故brr的数据类型为一个整型数组指针,brr+1同理;参考一维数组,brr[0]即指向第一行数组的首地址,为整型指针,brr[0]+1同理;brr[0][0]为二维数组的一个单元格,数据类型为整型,brr[0][0]+1同理;如下图

二维数组
注意
int (*x)[4] != int *x[4];(中括号优先级大)

引出一个概念:
int (*x)[4] —— 指向数组的指针,简称数组指针;
int *x[4] —— 保存指针的数组,简称指针数组;