![C++新经典](https://wfqqreader-1252317822.image.myqcloud.com/cover/184/44510184/b_44510184.jpg)
上QQ阅读APP看书,第一时间看更新
6.2.3 二维数组的初始化
与一维数组初始化一样,在定义二维数组的时候就可以顺便给该二维数组元素赋初值,这就叫二维数组的初始化。有如下这些赋初值的方法。
(1)按行给二维数组赋初值:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p104_85591.jpg?sign=1738813608-l9IuCOznSQTtKzjKghWGnRM79BvFUG8b-0-4697ab2104e2c2cbe45407917ca65663)
按行赋值,第一个花括号(大括号)内的数据赋值给第一行元素,第二个花括号内的数据赋值给第二行元素,以此类推,相当于a[0][0]=1,a[0][1]=2,a[0][2]=3,a[0][3]=4,a[1][0]=5,…,a[2][3]=12。
(2)将所有数据放在一个大括号里,例如如下语句,和(1)的效果一样,但是这样初始化看起来不清晰,容易遗漏和造成混乱:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p105_85592.jpg?sign=1738813608-ZhvBHSnclbYej0VsFPQjVRPJNr08Z8tC-0-5f528b055aa45cf6ad61a1b419ac1e47)
(3)对部分元素赋初值:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p105_85593.jpg?sign=1738813608-XlgpHTvUZTR4VX53SYAJEjwwlSKzD9Qs-0-668b9ff5dc9d25a32bd856a1257e2e2c)
每个大括号里的内容代表一行,这里省略了第三行,也就是没给第三行元素赋初值,那么所有没有赋值的元素,都会被系统默认赋成0。可以设置断点调试一下看,如图6.8所示。
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-P105_47568.jpg?sign=1738813608-VQn5yvEixEE26peCy5fFTSmRdCPln7yj-0-93f80c1929420ede750a9a788a5cc610)
图6.8 语句“int a[3][4]={{1},{3,4}};”赋初值的结果
如下代码,对第二行不赋初值,可以设置断点看一下结果:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p105_85595.jpg?sign=1738813608-7UOlIYseXJQhZzXL49DjVckGWqoPGSst-0-a35189ad9eddea9c43304250e4b73d2c)
可以看到,没赋初值的数组元素同样被系统默认赋成0。
(4)若对全部元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。例如对于如下语句:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p105_85597.jpg?sign=1738813608-a3uYIxwvqk6Rv6Zs4hqk0M4rC9DsyNcO-0-f90c64d2735de0049dc93377f2c6d097)
可以简写为:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p105_85598.jpg?sign=1738813608-yKDXd8Xfsh4LEIc0H3UqOXGQseYNxY8t-0-fb174b0a598f414a0b5fa816ce18c4be)
此时系统会根据初始化的数据总个数来分配存储空间,一共有12个数据,每行有4列,那当然是3行,但是一般很少这样编写代码,都应该明确地写出数组维度的大小。
也可以只对部分元素赋初值,但仍旧省略第一维长度,但应该分行赋初值:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p105_85599.jpg?sign=1738813608-Hi6gCPuIRh8Cbd8gIhEtj4j2NLTVdIhf-0-f1bbcd36a7f45077f70bdb257523a48e)
注意,目前所讲解的一维和二维数组都是整型数组,也就是数组元素中保存的都是整型数字,这是因为整型数组在编程时用的比较广泛。接下来,将要讲解字符数组,字符数组在C和C++中用的也非常广泛,同时也最容易用错,请认真学习。