数组部分
- 一维数组的创建和初始化
- 一维数组的使用
- 一维数组再内存中的存储
- 二维数组的创建和初始化
- 二维数组的使用
- 二维数组在内存中的存储
- 数组越界
- 数组作为函数参数
目录
一维数组的创建和初始化
-
数组的创建
数组是一堆相同类型元素的集合
数组长度要求是常数值
但是在C99标准之前 数组的大小是必须是常量或者是常量表达式
但在C99之后 数组的大小可以是变量 是为了支持变长数组
eg
所以这玩意不能初始化
2.数组的初始化
再次创建数组的同时给值
这两种写法效果相同,但是本质不同
上面只是放入了3个 下面的多一个\0
还有这种方法
3.一维数组的使用方法
下标引用操作符
求个数
总结,数组是有下标来访问的,第一个下表是0
数组的计算是可以通过计算得到的
-
4.一维数组在内存中的存储
这个地址是16进制的
而且每个地址差四
-
二维函数的创建和初始化
-
二位函数的创建
第一个括号里是行 第二个括号里是列
如果你不用括号分组,那么第一行列排满了就会自动排第二排
如果分组的话,下一组就是在下一列
然后是二维函数,尽量给大小,列必须有 行可以没有
而且二维也是0开始的
而且二维的使用就需要嵌套循环了
然后是他们的字节还是查四
也是连续的
-
数组越界
数组的下标范围,是由范围限制的
从0开始 到设置的元素个数n-1,如果访问下标小于 0或者大于n-1 那么就是访问越界了,超出了数组的合法空间,就越界了,此时编译器不一定会报错,但是程序是错误的。
结果是
而且一维数组和二维数组都会越界 反正不要越界
-
数组作为函数参数
比如排序数组内数字
数组名可以认为是数组首元素的地址
还有指针式
二维数组的指的是 它所对应的行的地址
直接增加了16
第一行的数组大小
算出的是行数
算出的是列数
然后是 &arr 如果arr是二维数组 那么取得就是整个二维数组的地址