前言
本节课讲的是二维数组,实际上和一维数组差不多
提示:以下是本篇文章正文内容,下面案例可供参考
一、声明与对比
声明:
int a[5];//一维数组 int a[3][4];//二维数组
对比:
一维数组:元素是数据类型的的数组 二维数组:元素是一维数组的数组,本质还是一维数组
c 是 3 个元素的一维数组,每个元素是 4 元素的一维数组
图解:
二维数组一般理解为行列,对初学者比较友好,int a[行][列],即 3 行 4 列,如下
二、二维数组初始化、下标、以及遍历
初始化:
//一些常见的情况 int a[3][2] = {{3,2},{6,5},{8,7}}; //内部大括号对应每个小一维数组 3 2 6 5 8 7 int a[3][2] = {{3},{9},{8,7}}; //初始化部分元素,其他默认 0 3 0 9 0 8 7 int a[3][2] = {3,9,8 }; //没有内部大括号,就依次初始化各元素,其他为 0 3 9 8 0 0 0 int a[ ][2] = {3,9,8}; //初始化时,可不写行,系统根据数据个数计算行,2 行 3 9 8 0
下标:
行下标与列下标,都是从 0 开始
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; //行下标:0 1 2 列下标:0 1 2 3 //元素: a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] //a[2][2] a[2][3]
二维数组元素个数为行*列
另一个角度 a[0]是第 1 个小数组的数组名字 a[1]是第 2 个小数组的数组名字 a[2]是第 3 个小数组的数组名字 第一个小数组的第一个元素就是 a[0][0]
图解:
二维数组遍历:
因为他有行和列,所以需要两个for循环,如果要按顺序输出的话:
就需要列的for循环在行的for循环里面
//遍历 int i, j; int c[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} }; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { printf("%d ", a[i][j]); } putchar('\n');//换行 }
三、二维数组赋值,地址,数组的大小
赋值:
a[0][0]=11; a[0][1]=12; a[0][2]=13; a[0][3]=14 ; a[1][0]=15 ; a[1][1]=16 ; a[1][2]=17 ; a[1][3]=18 ; a[2][0]=10 ; a[2][1]=11; a[2][2]=12 ; a[2][3]=13;
遍历赋值也是可以的
地址:
如:a[0][0]为一个变量的名字,则&a[0][0]为一个变量的地址
如果出现&a[0]
呢?其实他是第一行的第一个的元素地址
&a[1]为第二行的首元素的首地址,&a[3]为第三行的首元素的首地址
scanf_s("%d", &a[2][2]);
二维数组的大小:
//数组的大小:sizeof() //元素个数:行*列 int a[2][3]; sizeof(a); //2*3 = 6
四、其他更高维的数组
其他类型的数组同理
此外还有三维数组,四维数组等等多维数组,
int a[2][3][4]; 三维数组
int c[2][3][4][5]; 四维数组
原理跟二维数组一样,平时基本用不到。
总结
本节课讲的是二维数组的使用、以及更高维度的数组的简介