目录
数组初始化
数组越界
数组作为函数参数
数组初始化
数组的初始化:数组分一维二维等都需要对相应的数组进行初始化,在创建数组的同时给数组的内容一些合理初始值(初始化)。
数组在创建的时候如果想不指定数组的确定的大小就得初始化。数组的元素个数根据初始化的内容来确定。 数组是使用下标来访问的,下标从0开始。
数组的元素个数需根据初始化内容来确定,且数组通过找'\0'作为结束的标志。例:对于arr1来说:因为内存是连续的,abc后面的字符是随机值直到遇见'\0'则结束,所以abc后面跟着一堆的随机值。对arr2来看:双引号代表字符串,字符末尾自带'\0'。
数组大小可以用sizeof计算,int整型占4个字节。在一维二维数组中内存存储数组是连续存放的,且地址随数组下标的增长而增长(低—>高)。
数组越界
数组下标有范围限制的,n个数组元素的话从0开始且最后一个下标是n-1 ,当不在这个范围(0—n-1)就属于数组越界访问超出数组合法空间,在这过程中编译器可能不会报错需要自己做好检查。
数组作为函数参数
数组名是首元素的地址,有两个例外:一是sizeof求数组名时则代表的是整个数组;二是&数组名也代表整个数组 ;除了这两种情况外,数组名表示都是首元素的意思。
接着下面讲函数参数:
对比下面发现数组传参与变量传参不同,想要改变变量的值需要将变量地址传入通过地址找到变量并改变变量。然而数组传参不一样的就是传入数组名即首元素地址,知道首元素就可以找到数组其他元素。
下面这两张图比较:不用指针是为了让还没学懂指针的同学们更清楚了解数组,其实将鼠标放置在函数上可以发现本身就是指针,数组和临时变量的区别就体现出来了。数组传参不需要指针就可以改变元素。