在 CSP-S 考试的 1 个月考前冲刺阶段,字符数组与 string 类的相关知识是重点也是难点,其中存在不少易错点需要我们特别注意。
一、char 数组的手动管理
-
长度计算
- 知识点:char 数组的长度计算并非简单地数元素个数。对于以 ‘\0’ 结尾的字符串,其长度不包括 ‘\0’。
- 学习方法:多做一些计算长度的练习题,理解数组下标从 0 开始的特点。例如,对于数组 “hello”,实际存储为 {‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’},长度为 5 而非 6。
-
结尾 ‘\0’
- 知识点:‘\0’ 是 char 数组表示字符串的重要标志,表示字符串的结束。
- 学习方法:在处理 char 数组时,始终牢记要为其预留 ‘\0’ 的位置。比如在输入字符串时,要注意输入的长度不能超过数组大小减去 1。
二、string 类的迭代器失效场景
- 扩容时
- 知识点:当 string 类进行扩容操作,如添加元素导致容量不足而重新分配内存时,原有的迭代器会失效。
- 学习方法:通过实际的代码示例来加深理解。例如,在循环中使用迭代器插入元素,观察程序的行为和结果。
三、两者相互转换的正确方法
- c_str() 与 data()
- 知识点:c_str() 函数返回一个 C 风格的字符串(以 ‘\0’ 结尾的 const char*),data() 函数在 C++11 之前返回的字符串不一定以 ‘\0’ 结尾,C++11 及以后版本与 c_str() 表现一致。
- 学习方法:编写代码分别测试 c_str() 和 data() 的返回值,并将其用于不同的场景,如传递给 C 风格的函数。
总之,在备考的最后阶段,对于字符数组与 string 类的这些易错点,一定要通过大量的练习和总结来加深理解,避免在考试中出现错误。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!




