第六章 数组(二)

发布时间:2023年12月21日

二、二维数组

1、二维数组的一般形式

二维数组带两对中括号,也就是说带两个下标。

类型名 数组名[常量表达式][常量表达式];

例:int a[3][4];

上面的代码是定义 a 为3行4列的数组。

可以把二维数组看成是一种特殊的一维数组,a[3][4]这个二维数组,可以把 a看成是一个一维数组,这个一维数组有三个元素,即a[0]、a[1]、a[2],每个元素又是一个包含 4 个元素的一维数据。

如下图:

int a[3][4];就相当于定义了 12个元素 (3 行 4 列) ,第一维下标能引用的范围是 0- 2,第二维下标能引用的范围是 0-3 ,所以整个二维数组能够引用的元素如下,共 12 个元素:

a[0][0],a[0][1] ,a[0][2],a[0][3],

a[1][0],a[1][1] ,a[1][2],a[1][3],

a[2][0],a[2][1] ,a[2][2],a[2][3]

a[0][0]

a[0][1]

a[0][2]

a[0][3]

a[1][0]

a[1][1]

a[1][2]

a[1][3]

a[2][0]

a[2][1]

a[2][2]

a[2][3]

在 C语言中,二维数组的元索存放顺序是按行存放,即在内存中先顺序存放第一行元素,再存放第二行元素 ,以此类推,所以int a[3][4];这个二维数组在内存中存放数据看起来,如下图所示:

a[0][0]

a[0][1]

a[0][2]

a[0][3]

a[1][0]

a[1][1]

a[1][2]

a[1][3]

a[2][0]

a[2][1]

a[2][2]

a[2][3]

有了对二维数组的理解 ,三维数组甚至多维数组就好理解了。

例:int a[2][3][4]

a[0][0][0],a[0][0][1],a[0][0][2],a[0][0][3],

a[0][1][0],a[0][1][1],a[0][1][2],a[0][1][3],

a[0][2][0],a[0][2][1],a[0][2][2],a[0][2][3],

a[1][0][0],a[1][0][1],a[1][0][2],a[1][0][3],

a[1][1][0],a[1][1][1],a[1][1][2],a[1][1][3],

a[1][2][0],a[1][2][1],a[1][2][2],a[1][2][3]

在实际工作中,一维和二维数组常用, 三维和多维数组有的都比较少。

2、二维数组元素的引用

二维数组元素的引用形式为 :

数组名[下标][下标]

引用二维数组元素时必须带两个中括号 ,如 a[2][3],下标也可以整型表达式,如 a[5-3][4-1],但一般不会这样写,一般都是写成一个整数,注意不要写成 a[2,3],必须是两个中括号。

注意:

1、不管一维数组还是二维数组,它们的数组元素(也叫成员)应该被看成一个普通变量,如一维数组的a[1],二维数组的a[2][3],都把它们当成普通变量看待和使用即可。

2、定义int a[3][4],那么第一维下标的范围是 0-2,第二维下标的范围是 0-3,在引用的时候,只要这两个下标有一个超过范围,引用就是错误的。

3、要严格区分数组定义时使用的[3][4]和引用数组元素时使用的[3][4],这完全是两个意思:前者用来定义数组的维数和各个维度的大小,后者a[3][4]中的 3 和 4 是下标值,用来标识某个元素。

例:

2、二维数组的初始化

与一维数组初始化一样 ,在定义二维数组的时候,就可以顺便给该二维数组元素赋初值,这就叫二维数组的初始化。

(1)按行给二维数组赋初值?

例:

按行赋值,第一个花括号{大括号}内的数据赋值给第一行元素,第二个花括号内的数据,赋值给第二行元素,以此类推。

a[0][0]=1

a[0][1]=2

a[0][2]=3

a[0][3]=4,

a[1][0]=2

a[1][1]=3

a[1][2]=3

a[1][3]=4,

a[2][0]=3

a[2][1]=4

a[2][2]=5

a[2][3]=6

(2)将所有数据放在一个大括号里 ,看起来不清晰,容易遗漏和造成混乱,不建议。

例:

(3)对部分元素赋初值。

例:

每个大括号里的内容代表一行,这里省略了第三行 ,没给第三行元素赋初值,那么所有没有赋值的元素,都会被系统默认赋成0。 可以设置断点调试一下看看。

例:对第二行不赋初值,断点调试,没赋初值的数组元素同样被系统默认赋成0。

(4)若对全部元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。

例:

?int a[3][4]={1,2,3,4,2,3,4,5,3,4,5,6};

可以简写为:

int a[ ][4]={1,2,3,4,2,3,4,5,3,4,5,6};

此时系统会根据初始化的数据总个数来分配存储空间,一共有12个数据,每行有4列, 那当然是3行,但是一般很少这样编写代码 ,都应该明确地写出数组维度的大小。

注意:

目前所讲解的一维和二维数组都是整型数组, 也就是数组元素中保存的都是整型数字,这是因为整型数组在编程时用的比较广泛,接下来,将要讲解字符数组 ,字符数组在C和 C++中用的也非常广泛,同时也最容易用错,需认真学习。

文章来源:https://blog.csdn.net/weixin_30479905/article/details/135123481
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。