![C++新经典](https://wfqqreader-1252317822.image.myqcloud.com/cover/184/44510184/b_44510184.jpg)
上QQ阅读APP看书,第一时间看更新
6.3.2 字符数组的初始化
字符数组的初始化有如下几种方法。
(1)逐个字符赋给数组中的元素,这种初始化方式最好理解。如下把10个字符分别赋给数组元素c[0]~c[9]:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p106_85602.jpg?sign=1739349446-U70oYg1az0013pG9E0ElAMRN6lDVkGiN-0-b33f9ec3ecd2857f7d3b53d99ec6f59c)
(2)如果提供的初值个数和预定的数组长度相同,定义时可以省略数组长度,系统会自动根据初值个数确定数组长度:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p106_85604.jpg?sign=1739349446-KdbNn5MD8SFd4hz0XjY6tvJrEey2nnd5-0-698e9dda9f1842033c9efb3fa939ac1d)
(3)如果初值个数大于数组长度,则做语法错误处理:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p106_85605.jpg?sign=1739349446-5mW5lnMbBWV55vHM6j7SFc2lWMCR3fwA-0-4b367bb2bac33e5d488d0c92ec7fb526)
(4)如果初值个数小于数组长度,则只将这些字符赋给数组中前面的元素,其余的元素值可能会给'\0',也可能无法确定,所以强烈不建议使用这些无法确定的元素值:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p106_85607.jpg?sign=1739349446-RSWoiE3MGwID83yRyRZ1zM4le61S1uNZ-0-1df049b6fad1668b386f373fb4035184)
转义字符'\0',已经很熟悉了,就等于数字0,所以如下代码:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p107_85608.jpg?sign=1739349446-5V43Bq5MvRqRn8GxRksw1uRJGHrbPsiZ-0-42ec3a6df76b83dda15482cb7faa599c)
后续讲解字符串时会看到,系统会自动给字符串末尾增加一个'\0'字符作为整个字符串的结束标记。当然,如果手工给字符串末尾增加一个'\0'也是完全没有语法错误的,或者如果给任何一个合法的字符数组中的元素赋值成'\0'都是可以的,也同样没有语法错误,如c[0]='\0'、c[1]='\0'等。
前面学习了二维数组,在学习的时候是以整型二维数组来举例的,其实也可以是字符型二维数组。试举一例如下,请自行在计算机上测试并得出结果:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p107_85610.jpg?sign=1739349446-v1Xakp1N5MGLsJsH7GKmM0HDxsUY31S1-0-51578c8aad93a802ad4b5ea134a37c09)
实际应用中,二维字符数组用的并不多,而一维字符数组用得比较多,所以重点掌握一维字符数组,为什么这样说呢?等讲解后续的字符串知识时就知道了。现在再来一个范例,巩固一下所学的一维字符数组知识:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p107_85611.jpg?sign=1739349446-85Ly2vYZK1n4eZWiO3CS2ToohoHahwpb-0-4389a07fe8cd87f2250ba92f74c5bc13)