首页 > 后端开发 > C++ > 为什么将字符串文字转换为'char*”在 C 中无效但在 C 中允许?

为什么将字符串文字转换为'char*”在 C 中无效但在 C 中允许?

DDD
发布: 2024-12-17 10:11:25
原创
876 人浏览过

Why is Converting a String Literal to `char*` Invalid in C   but Allowed in C?

C 与 C 中从字符串文字到 'char*' 的转换

C 11 标准明确指出将字符串文字转换为'char*' 无效,但在 C 中仍然有效。这种差异源于两种语言处理字符串方式的根本差异

C 中的 C 兼容性

从历史上看,C 允许从字符串文字到 'char' 的已弃用隐式转换。然而,在 C 11 中,这种转换被正式删除,转而将字符串文字视为“char const ”。这确保了不变性,防止可能导致未定义行为的更改。

C 中的显式转换

虽然隐式转换在 C 中不再可用,但显式转换为'char' 仍然可以执行。然而,这并没有解决不变性的根本问题。修改字符串文字的 'char' 转换所指向的值仍然会导致未定义的行为。

C 中的安全第一

通过强制执行字符串文字的正确类型('char const *'),C 优先考虑安全。尝试修改文字将被标记为错误,从而消除崩溃的可能性。

C 中的旧代码

C 保持与依赖于隐式的现有代码的兼容性从字符串文字到“char*”的转换。做出这个决定可能是为了避免破坏遗留软件。然而,它凸显了 C 和 C 在平衡兼容性和安全性方面的哲学差异。

综上所述,从字符串文字到 'char' 的转换在 C 中是无效的,因为它违反了不变性原则。虽然 C 出于遗留原因允许这种转换,但强烈建议不要使用“char const ”来提高安全性。

以上是为什么将字符串文字转换为'char*”在 C 中无效但在 C 中允许?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板