二维数组
就是数组中包含多个数组
定义方法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;
}