1.
一维数组的创建
数组:一组相同元素类型的集合
C99之后引入变长数组,数组的大小可以用变量指定的:
Int arr[n];
但VS2022/VS2019中不支持
注意:变长数组不能初始化
一维数组的初始化
不完全初始化:
指定大小的数组,初始化前几个元素 剩余的元素默认初始化为0
2.
一维数组的使用
[]下标访问操作符
3.
一维数组在内存中的存储
每个元素的地址是由低到高且连续的,地址编号之差为元素类型的大小,单位:字节
十六进制:
0 1 2 3 4 5 6 7 8 9 a b c d e f
0 ~~~~~~~~ 15
二维数组的创建和初始化
格式:
Int arr[行数][列数]
初始化:
int arr[2][3] = {{1,1,1},{2,2,2}};
图解:
1 1 1
2 2 2
int arr[3][3] = {{1,2},{2,3,4},{1}}
图解:
1 2 0
2 3 4
1 0 0
注意:二维数组初始化后,可以省略行数,但列数不能省略
4.
二维数组的使用
通过下标访问
5.
二维数组在内存中的存储
每一个元素、每一行元素都是连续存储的
由此可知,当列数不知道时,无法存储下一行,所以在初始化时列数不可省略
二维数组可理解为一维数组的数组
6.
数组越界
数组的下标有范围限制
范围是0~(n-1)
当数组的下标超出范围,就是数组越界
注意:数组越界编译器不会报错
需要自己检查
6.
数组作为函数参数
时间点:16:00
7.
数组名
数组名就是地址
通常来说,数组名是数组首元素的地址
但是,有两个例外:
sizeof(数组名);
计算的整个数组的大小,单位是字节
&数组名;
这里的数组名表示整个数组,取出的是整个数组的地址
可以写成
所以不能在自定义函数内求元素个数