![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=1739205908-6ijJhTehF4wuHF2W911eigQBrS3V38w2-0-f8b603ce22ebf5054dea70c627992fef)
(2)如果提供的初值个数和预定的数组长度相同,定义时可以省略数组长度,系统会自动根据初值个数确定数组长度:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p106_85604.jpg?sign=1739205908-GK16cFTS4UeWKWxY9T7dV99amWLFJxOG-0-6632231fa2b6a92af0f7a7a4234273e5)
(3)如果初值个数大于数组长度,则做语法错误处理:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p106_85605.jpg?sign=1739205908-j7cnC9T1udjHe06vGUm5zRhHm312OwYm-0-1bed594e8a01363aa44b5f5966f6d3ed)
(4)如果初值个数小于数组长度,则只将这些字符赋给数组中前面的元素,其余的元素值可能会给'\0',也可能无法确定,所以强烈不建议使用这些无法确定的元素值:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p106_85607.jpg?sign=1739205908-kFCO20xyYEMy3YcpECb0X9B62oiaeN4x-0-93144f96c7610b4040553b3cf6496aee)
转义字符'\0',已经很熟悉了,就等于数字0,所以如下代码:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p107_85608.jpg?sign=1739205908-0uHY5ANh4cvh6NkU70cXvYQ7Nc5tzYHY-0-1a1206c42244e8a705d01ccc1dacb3cf)
后续讲解字符串时会看到,系统会自动给字符串末尾增加一个'\0'字符作为整个字符串的结束标记。当然,如果手工给字符串末尾增加一个'\0'也是完全没有语法错误的,或者如果给任何一个合法的字符数组中的元素赋值成'\0'都是可以的,也同样没有语法错误,如c[0]='\0'、c[1]='\0'等。
前面学习了二维数组,在学习的时候是以整型二维数组来举例的,其实也可以是字符型二维数组。试举一例如下,请自行在计算机上测试并得出结果:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p107_85610.jpg?sign=1739205908-HMYjqBvObrK5x8SCkS8RsgjiXTMLVBUj-0-41b7e50cbf1b74104e1208383cb59330)
实际应用中,二维字符数组用的并不多,而一维字符数组用得比较多,所以重点掌握一维字符数组,为什么这样说呢?等讲解后续的字符串知识时就知道了。现在再来一个范例,巩固一下所学的一维字符数组知识:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p107_85611.jpg?sign=1739205908-Ve4mYIIpMz5NDyF4GNJjnNne5lw0sE2F-0-aba1f5ecb063c0a70cc41a5b1ecf4944)