为了账号安全,请及时绑定邮箱和手机立即绑定

C和C+中字符串的类型是什么?

C和C+中字符串的类型是什么?

C++ C
繁星coding 2019-06-14 15:30:16
C和C+中字符串的类型是什么?C中字符串文字的类型是什么?是吗char *或const char *或const char * const?那C+呢?
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

C字符串文字具有类型char [n]哪里n等于字符数+1,以表示字符串末尾的隐式零。

数组将被静态地分配;它不是const,但修改它是未定义的行为。

如果它有指针类型char *或不完全类型char []sizeof无法按预期工作。

生成字符串文本const是一个C+成语,而不是任何C标准的一部分。


查看完整回答
反对 回复 2019-06-14
?
开满天机

TA贡献1786条经验 获得超13个赞

由于各种历史原因,字符串文本总是类型的。char[]在C.

在早期(在C 90中),有人说修改字符串文字会调用未定义的行为。

他们没有禁止这样的修改,也没有制造字符串文本。const char[]这就更有意义了。这是为了与旧代码的向后兼容性原因。一些旧的操作系统(尤其是DOS)不反对修改字符串文字,所以这里有很多这样的代码。

即使在最近的C标准中,C仍然有这个缺陷。

C+继承了C中相同的缺陷,但在后来的C+标准中,它们最终形成了字符串文本const(在C+03中标记过时,最后在C+11中修正)。


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 1156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信