微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C ++中声明char变量,为什么需要加1来声明数组大小

如何解决在C ++中声明char变量,为什么需要加1来声明数组大小

当我们声明char变量时有一句话。

我们应该这样声明-> char ArrayName[Maximum_C-String_Size+1];

例如:

char arr[4+1] = {'a','b','c','d'}

但是 arr[4] = {'a','d'}也可以

为什么需要加1? 谢谢!

解决方法

除非您要定义将用作空终止字符串的东西,否则无需这样做。

// these two definitions are equivalent
char a[5] = { 'a','b','c','d' };
char b[5] = { 'a','d','\0' };

如果您只想在其中包含4个char值的数组,并且不希望将其与任何希望找到字符串终止符的东西一起使用,则无需添加额外的元素。

,

如果要在数组中存储C风格的 string ,则字符串终止符需要一个额外的元素。

与C ++不同,C没有唯一的字符串数据类型。在C语言中,字符串只是字符值的序列,包括零值终止符。字符串"foo"表示为序列{'f','o',0}。该终止符是各种字符串处理函数如何知道字符串的结尾的地方。终结符不是可打印字符,也不计入字符串的长度(strlen("foo")返回3,而不是4),但是您需要留出空间来存储它。因此,如果您需要存储一个N个字符长的字符串,那么存储该字符串的数组至少需要N + 1个元素宽才能说明终止符。

但是,如果要存储的序列不应该被视为 string (您不打算打印它或使用字符串库函数对其进行操作),则不要无需预留额外的元素。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。