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