c++ - delete的[]应该放在哪里?
问题描述
考虑:
int *arr = new int[10];
我见过三种编写释放arr
:delete[] arr
和. 首先,既然是运算符的名称,那么在方括号和方括号之间引入一个空格是合法的吗?其次,各种方式背后的逻辑是什么,应该首选哪种方式?delete [] arr
delete []arr
delete[]
delete
解决方案
为什么在 delete 和方括号之间引入空格是合法的?
因为语言语法允许。
通常在大多数上下文中,空格(制表符、换行符、空格)会被忽略。空格用于分隔单词,但如果编译器知道它们[
]
是单独的符号,空格就会被忽略。以下几行含义相同:
delete[]arr;
delete []arr;
delete [] arr;
delete[] arr;
delete [ ] arr ;
换行符或制表符也被忽略:
delete
[
]
arr
;
他们的意思相同,做同样的事情。
各种方式背后的逻辑是什么,应该首选哪种方式?
逻辑是可维护性和可读性。没有人想读取符号之间的数百个换行符并将文件向右滚动数千列以找到;
. 程序员负责使其代码对其他人可读,以便以后可以理解代码,以便轻松发现错误,修补它,继续开发。
PS。C++ 没有这样的东西,但是因为 C 和 C++ 共享大部分语法规则,我想我可以提一下The International Obfuscated C Code Contest,目标是用 C 编写混淆代码。参赛者经常使用你的规则可以在语法标记之间放置空格,例如从其程序的源代码创建图像或星形或不同的形状。
推荐阅读
- angular - 如何根据 Firebase 服务取消测试 Angular 组件
- c# - 使用 Moq 进行 Elasticsearch Nest 单元测试:无法模拟具体类
- flutter - 弃用自定义颤振小部件
- react-hook-form - 反应钩子形式:点击清除文件输入字段
- hololens - 有没有办法通过 Hololens 在 Unity 中离线使用 Python?
- python - 如何对直线进行降噪
- tailwind-css - 从 Tailwind UI Figma 文件导出以创建 Tailwind CSS 主题
- java - 当涉及到多态性、继承、重载、覆盖、泛型和铸造的混合时,如何记住事情
- java - 使用 webview 和 Fragment 在 android 中动态添加选项卡
- javascript - Handlebars 动态数据显示:“Uncaught SyntaxError: Invalid or unexpected token”