数组是一个整体,它的内存是连续的;也就是说,数组元素之间是相互挨着的,彼此之间没有一点点缝隙。
连续的内存为指针操作(通过指针来访问数组元素)和内存处理(整块内存的复制、写入等)提供了便利,这使得数组可以作为缓存(临时存储数据的一块内存)使用。
创建数组必须先分配内存,如果初始化的时候就赋值就可以无需设置长度,编译器会自动推算,如果初始化没有赋值,就必须先给出数组长度
一维数组
创建数组:
//dataType arrayName[length]
int arr[] = {1,2,3,4,5,6} //如果一开始就赋值,可以不用给出数组的长度
int arr1[6];
float arr2[6]; //创建一个长度为6的浮点数组
如果赋值元素少于初始化数组的长度的话,后面的元素会自动初始化为该数组的数据类型的0
对于short、int、long,就是整数 0 对于char,就是字符 ‘\0’; 对于float、double,就是小数 0.0
我们可以通过下面的形式将数组的所有元素初始化为 0
int nums[10] = {0}; char str[10] = {0}; float scores[10] = {0.0};
由于剩余的元素会自动初始化为 0,所以只需要给第 0 个元素赋值为 0 即可。
二维数组
二维数组的初始化可以按行分段赋值,也可按行连续赋值。
// 定义一个整型二维数组 按行分段赋值
int array[2][3] = {{1, 2, 3}, {4, 5, 6}};
// 按行连续赋值
int array1[2][3] = {1, 2, 3, 4, 5, 6};
// 按行连续赋值 第一维的长度可以不用给出 会自动根据第二维的长度 分配第一维的长度。
int array2[][3] = {1, 2, 3, 4, 5, 6};