♥<二>.二维数组
1.二维数组的_创建和初始化
a.创建
跟一维数组类似,只不过二维数组带两个方括号
像这样👇
可以把二维数组理解成一个矩阵,第一个方括号内的数代表行,第二个方括号内的数表示列
比如上面arr2:
b.初始化
🍈一般情况
⭐对于二维数组,行可以省,列不能省
对于arr1:自左到右自上而下依次初始化,其余元素为0。arr1[0][0]、arr1[0][1]、arr1[0][2]、arr1[0][3]、arr1[1][0]分别初始化为1、4、6、9、7;其余为0
对于arr2:1,2一组;3,4一组。即,arr2[0][0]、arr2[0][1]、arr[1][0]、arr2[1][1]分别为1、2、3、4
对于arr3:类比一维数组“数组的元素个数根据初始化的内容来确定”,对于二维数组,根据初始化内容确定行数
🍈全部初始化为0
与一维数组一模一样
2.二维数组的_使用
🍉计算数组元素个数
计算方法是两个方括号内的常量(表达式)相乘
同样,类比一维数组,
🍉输入输出
一维数组相当于只有“一行”
而二维数组有“一行一列”,因此可以用for循环嵌套for循环来实现二维数组的输入输出
3.二维数组_在内存中的存储
像一维数组一样,我们尝试打印二维数组arr的每个元素的地址
注意这个地方👇
第一行的最后一个元素跟第二行第一个元素的地址相差也为4!
这说明,二位数组中元素的地址也是连续的,相当于:
可以得出结论:二维数组在内存中的存储也是连续的
♥<三>.数组越界
数组的下标是有范围限制的。数组的下标规定从0开始,如果数组有n个元素,最后一个元素的下标就是n-1。所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。
比如:
这个数组arr只有5个元素,最后一个元素的下标为4
因此arr[5]就是非法的了,越界了。
对于二维数组,它的行和列也可能存在越界
⭐⭐⭐要注意,C语言本身不做数组下标的越界检查,像这个例子一样,编译器没报错,也能打印arr[5]的值。但是编译器不报错,并不意味着程序就正确,所以写代码时,要检查好数组是否越界~~









