二维数组
就是数组中包含多个数组
定义方法1:
int arr [m] [n] = 其中的m就是这个二维数组里有多少个一维数组(二维数组的长度)
{ 其中的n就是这个二维数组中的一维数组有多少个元素(一维数组的长度)
{1,2,3,4....},
{1,2,3,4....},
{1,2,3,4....},
};
定义方法2:
int arr1[5] = {1,2,3,4,5};
int arr2[5] = {1,2,3,4,5};
int* arr[2] = {arr1,arr2}
使用索引遍历二维数组(第一种定义格式)
弊端:
要求内部数组长度一致
代码案例
#include<stdio.h> int main() {int arr[3][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};int i,j;for(j=0;j<3;j++) //外循环:每个一维数组都遍历{for(i=0;i<5;i++) //内循环:一维数组中的每个元素都遍历{printf("%d ",arr[j][i]); //arr[j][i]的含义就是arr中第j个数组中的第i个元素}printf("\n");}return 0; }
使用索引遍历二维数组(第二种定义格式)
代码案例
#include<stdio.h> int main() {//定义各个一维数组int arr1[] = {1,2,3};int arr2[] = {4,5,6,7};int arr3[] = {8,9,10};//计算各个一维数组的长度//重点:要在将各个一维数组存入二维数组前计算,//因为数组参与计算的时候,会退化为第一个元素的指针,那时计算的长度就是第一个元素的长度int len1 = sizeof(arr1) / sizeof(int);int len2 = sizeof(arr2) / sizeof(int);int len3 = sizeof(arr3) / sizeof(int);//将各个一维数组长度存入数组,方便调用int lenArr[] = {len1,len2,len3};//定义二维数组,将上面定义的一维数组存入int* arr[3] = {arr1,arr2,arr3};int i,j;for(j=0;j<3;j++){for(i=0;i<lenArr[j];i++){printf("%d ",arr[j][i]);}printf("\n");}return 0; }