You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中字符串如何终止?char数组初始化时\0的相关疑问

C语言字符串终止符常见问题解答

问题1:char a[5]="abcd\n" 中\0的位置?

字符串字面量 "abcd\n" 包含'a'、'b'、'c'、'd'、'\n'共5个字符,你声明的数组a大小刚好为5,编译器会直接把这5个字符填充到数组中,不会额外添加\0终止符。此时a只是普通字符数组,不是C标准定义的“字符串”——因为它缺少\0结尾。

问题2:用char[]存储字符串时,是否必须预留位置给\0?

分两种场景:

  • 如果需要把数组当作标准C字符串使用(比如传给strlen、printf("%s")这类依赖\0识别结尾的库函数),那必须预留至少一个字节给\0。否则这些函数会越界读取内存,直到随机遇到\0,引发未定义行为。
  • 如果只是用数组存储一组字符,不需要依赖\0判断长度(比如自己通过下标逐个访问),那完全不需要预留\0的位置。

内容的提问来源于stack exchange,提问作者cy10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:25:59