一维数组
定义:代表内存里一组 “连续” 的 “同类型” 存储区。
声明:int arr[5]; //数组里面包含的存储区个数是不可以改变的。
初始化:int arr[5] = {0, 1, 2, 3, 4};
初始化数据个数大于存储区个数,就把多余数据忽略。
初始化数据个数小于存储区个数,就自动把后面的存储区初始化为0。
初始化数据个数等于存储区个数,可以省略声明中的存储区个数。
下标:数组里每个存储区的标号。超出范围的下标称之为越界。
注意:1、数组名称表示一个存储区的地址。
可变长数组(C99)
C99中允许声明数组的时候使用变量表示数组里的存储区个数。
注意:
1、每次程序运行过程中数组里存储区个数不会改变,如果程序多次运行则每次运行的时候数组里的存储区个数可以不同。(即:数组存储区一旦确定就不可能改变)。
2、不可以初始化。
多维数组
二位数组是最常见的多维数组,只能表示存储区的一次分组情况。
声明:int arr[2][4];
初始化:
1、arr[0][1] = 5; //双重循环赋值和打印
2、 int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int arr[2][3] = {1, 2, 3, 4, 5, 6};
注意如下两种初始化数据的不同:
int arr[2][3] = {1, 2, 3, 4};
int arr[2][3] = {{1, 2}, {4, 5}};
3、若已知分组个数,则可以省略分组下标
int arr[][2] = {1,2,3,4,5}; //计算机会认为是三组。
注意:
1、二位数组名称:表示第一个存储区的地址: arr = &arr[0][0];
2、二位数组名称配合一个下标使用:表示下标对应组中第一个存储区的地址。
arr = arr[0] = &arr[0][0]; //地址相同
sizeof(arr) == 24; //二维数组的size
sizeof(arr[0]) == 12; //二维数组中一行的size