在C语言中数组分为 一维数组和二维数组。它们的共同点是数组中的元素下标都必须从0开始。所以定义数组时长度若为n,则数组下标只能从0到n-1。
一维数组:
一维数组用:“数组名[下标]”来定义。下标可以是整型常量也可以是整型表达式。一维数组的初始化可以有很多种,可以对数组元素全部赋初值,也可对数组部分元素赋初值,也可对数组元素全部赋初值时将数组定义为不确定长度的数组。代码展示如下:
static int a[3]={7,8,9};//对数组元素全部赋初值执行后a[0]=7,a[1]=8,a[2]=9
static int a[3]={7};//对数组部分元素赋初值执行后a[0]=7;a[1]=0,a[2]=0
static int a[]={7,8,9};//对数组元素全部赋初值时定义不确定长度数组执行后a[0]=7,a[1]=8,a[2]=9
二维数组:
二维数组用:“数组名[常量表达式1][常量表达式2]”来定义,其中常量表达式1指的是元素的行数,常量表达式2指的是元素的列数。所以常数表达式1和常数表达式2都必须是正整数。还需要注意的是二维数组的存放顺序是按行存放,先存放第一行的数据,再存放第二行的数据,以此类推。例如a[2][3]表示的是一个2行3列的数组,它的存放顺序是a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2]。二维数组赋初值的方法也有很多种,可以分行给二维数组赋初值,也可按数组在存储时的排列顺序赋初值,还可以允许省略第一长度来给二维数组赋初值(第二长度不可省)。代码展示如下:
staitic int a[2][2]={{5,6},{7,8}};//分行赋初值执行后结果a[0][0]=5,a[0][1]=6,a[1][0]=7,a[1][1]=8
staitic int a[2][2]={9,8,7,5};//按存储排列顺序赋初值执行后结果a[0][0]=5,a[0][1]=6,a[1][0]=7,a[1][1]=8
staitic int a[][2]={9,8,7,5};//省略第一长度赋初始值执行后结果a[0][0]=5,a[0][1]=6,a[1][0]=7,a[1][1]=8