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

为什么从字符串常量到'char *'的转换在C中有效但在C ++中无效

为什么从字符串常量到'char *'的转换在C中有效但在C ++中无效

C++ C
翻过高山走不出你 2019-12-18 16:26:57
C ++ 11标准(ISO / IEC 14882:2011)在§ C.1.1:char* p = "abc"; // valid in C, invalid in C++对于C ++,因为指向字符串文字的指针是有害的,因为任何对其进行修改的尝试都将导致崩溃,这是有害的。但是为什么在C语言中有效呢?C ++ 11还说:char* p = (char*)"abc"; // OK: cast added这意味着,如果将强制类型转换添加到第一条语句中,它将变为有效。为什么强制转换使第二条语句在C ++中有效,它与第一条语句有何不同?还是有害吗?如果是这样,为什么该标准说没问题?
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

非常危险的是它没有提供任何有意义的灵活性,至少对于(完全)关心可移植性的代码而言。写入字符串文字通常会使您的程序在现代OS上中止,因此允许代码在此处尝试写入不会增加任何有意义的灵活性

查看完整回答
反对 回复 2019-12-18
  • 3 回答
  • 0 关注
  • 882 浏览

添加回答

举报

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