在我们的学习中一般只有一维数组和二维数组的使用,所以我们这里仅仅介绍一维数组和二维数组。
一 . 一维数组的创建和初始化:数组的意思是一组相同类型的集合;
typt_t arr_name [const_n];
//typt_t 是指数组的元素类型
//const_n 是一个常量表达式,用来指定数组的大小
例如: int arr[10] = {0}; //意思就是创建一个整型 名叫arr 并包含有10个元素的数组,等于0 就是将它里面的元素全部初始化为0。
二 . 一维数组的使用:对于数组我们都只有有一个操作符: [ ] ,下标引用操作符,就用它来访问数组之中的元素。
三 . 一维数组的存储:那么一维数组在内存中是怎么存储的呢?经过试验我们可以知道,随着数组下标的增长,元素的地址,也在有规律的递增。由此我们可以知道:数组在内存中是连续存放的。
四 . 一维数组的指针访问:我们知道数组名其实就是数组首元素的地址,数组名+整数 就可以获取数组每个元素的地址,
那么我们就可以得到 arr[i] = *(p_arr + i)。
五 . 注意:数组名虽然表示数组首元素的地址,但是在两种情况下不同。
1.sizeof(数组名) 这时数组名表示整个数组的大小。
2.&(数组名)这个时候数组名代表整个数组,取出的是整个数组的地址,虽然它和数组首元素地址一样,但是意义不同。
六 . 二维数组的创建和初始化:arr[3][4] (创建了一个三行四列的二维数组);
二维数组的初始化与一维数组相似:arr[3][4] = {{ 1, 2},{ 4, 5}};
这样创建出来的数组为 1 2 0 0 0
4 5 0 0 0
0 0 0 0 0
七 . 二维数组的使用和一位数组一样,也是通过下标来使用。
八 . 二维数组的存储:二维数组画出来虽然是一个i行j列的数组,但是在内存中他与一维数组一样,存完第一行的地址,后面紧接着就会存第二行的地址,不会像我们看到的换行存储。