C语言如何定义⼆维数组?

时间:2024-03-14 22:08:00

一、问题

        有⼀个考试,共有10⼈参加,10 个⼈的考试成绩可以⽤⼀维数组表示。如果说还是 10 个⼈考试,每个⼈考5科,这样就有50 个考试成绩,这时可以⽤⼆维数组来表示。在 C语⾔中,怎样定义⼆维数组呢?

二、解答

        ⼆维数组的定义和⼀维数组⼤致相同,只是⽐⼀维数组多了⼀个常量表达式,其⼀般形式如下:

 数据类型说明符 数组名[常量表达式1][常量表达式2]; 

        “类型说明符”⽤来说明数组中元素的数据类型。“数组名〞唯⼀标识该⼆维数组。 第⼀个⽅括号“ [ ] ”中的常量表达式1标识第⼀维下标的长度,第⼆⽅括号“ [ ] ”中常量表达式2标识第⼆维下标的长度。

        “常量表达式 1”被称为⾏下标,“常量表达式2”被称为列下标。如果有⼆维数组a[n][m],则⼆维数组的下标取值范围如下:

(1)⾏下标的取值范围是 0~n-1。

(2)列下标的取值范围是 0~m-1。

(3)⼆维数组的最⼤下标元素是 a[n-1][m-1]。 10 个⼈考试的问题就可以定义为:

int a[10][5];

        这是⼀个10⾏5列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有10×5个,即:

a[0][0],a[0][1],a[0][2],...,a[0][9]
...
...
...
a[4][0],a[4][1],a[4][2],...,a[4][9]

        在C语⾔中,⼆维数组是按⾏排列的,即按⾏顺次存放,先存放 a[0]⾏内所有数组元素,再存放 a[1]⾏的所有数组元素。

        ⼆维数组可以看做是⼀维数组的拓展,也可以看成是特殊的⼀维数组。例如 “int a[10][5];”,可以理解为⼀维数组中四个元素 a[0]、a[1]、…、a[9],每个元素又包含五个数组元素。

二维数组名 一位数组名 数组元素
a a[0] a[0][0] , a[0][1] , a[0][2] , ... , a[0][9]
a a[1] ...
a a[2] ...
a a[3] ...
a a[4] a[4][0] , a[4][1] , a[4][2] , ... , a[4][9]

        这⾥ a[0]、a[1]、a[2]不能当做数组元素使⽤,只能作为数组名,因为它们⼰经不是单纯的数了。

三、总结

        多维数组的定义与⼆维数组相似。