C语言中char stringNew[MAX_STRING_SIZE*2+1]声明的作用是什么?
关于C语言字符串数组大小声明的解释
嘿,我来帮你把这个点掰明白!
先回顾下原字符串的声明:
char string[MAX_STRING_SIZE+1]; // MAX_STRING_SIZE定义为500,+1用于存放终止字符串的NULL字符
这个很好理解——MAX_STRING_SIZE是允许用户输入的最大有效字符数(最多500个),而C语言的字符串必须以NULL字符(\0)结尾来标记结束,所以要多留1个位置给它。
再看你困惑的新字符串声明:
char stringNew[MAX_STRING_SIZE*2+1];
这里的逻辑完全贴合程序的需求:
- 程序要把输入的每个字符重复输出两次,比如输入6个字符的
ABCdef,处理后会变成12个字符的aabbccDDEEFF。也就是说,处理后的有效字符数是原字符串的2倍。 - 同样,处理后的新字符串也需要以
NULL字符结尾,所以在翻倍的基础上,还要再加1个位置来存放这个终止符。
你后来自己找到的答案完全正确!其实原理就是这么直接——跟着功能需求来分配存储空间,既要满足字符重复后的容量,也不能忘了C字符串必不可少的终止符位置。
内容的提问来源于stack exchange,提问作者8TrackRobot
相关产品推荐
相关产品推荐

