猿问

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

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

C中字符串文字的类型是什么?是吗char *const char *const char * const?

那C+呢?


繁星coding
浏览 1157回答 3
3回答

万千封印

C字符串文字具有类型char [n]哪里n等于字符数+1,以表示字符串末尾的隐式零。数组将被静态地分配;它不是const,但修改它是未定义的行为。如果它有指针类型char *或不完全类型char [], sizeof无法按预期工作。生成字符串文本const是一个C+成语,而不是任何C标准的一部分。

开满天机

由于各种历史原因,字符串文本总是类型的。char[]在C.在早期(在C 90中),有人说修改字符串文字会调用未定义的行为。他们没有禁止这样的修改,也没有制造字符串文本。const char[]这就更有意义了。这是为了与旧代码的向后兼容性原因。一些旧的操作系统(尤其是DOS)不反对修改字符串文字,所以这里有很多这样的代码。即使在最近的C标准中,C仍然有这个缺陷。C+继承了C中相同的缺陷,但在后来的C+标准中,它们最终形成了字符串文本const(在C+03中标记过时,最后在C+11中修正)。
随时随地看视频慕课网APP
我要回答