首页 > 解决方案 > delete的[]应该放在哪里?

问题描述

考虑:

int *arr = new int[10];

我见过三种编写释放arr:delete[] arr和. 首先,既然是运算符的名称,那么在方括号和方括号之间引入一个空格是合法的吗?其次,各种方式背后的逻辑是什么,应该首选哪种方式?delete [] arrdelete []arrdelete[]delete

标签: c++delete-operator

解决方案


为什么在 delete 和方括号之间引入空格是合法的?

因为语言语法允许。

通常在大多数上下文中,空格(制表符、换行符、空格)会被忽略。空格用于分隔单词,但如果编译器知道它们[ ]是单独的符号,空格就会被忽略。以下几行含义相同:

 delete[]arr;
 delete []arr;
 delete [] arr;
 delete[] arr;
 delete                [           ]        arr              ;

换行符或制表符也被忽略:

 delete


   [
                                                            ]

                                       arr
                                                       ;

他们的意思相同,做同样的事情。

各种方式背后的逻辑是什么,应该首选哪种方式?

逻辑是可维护性和可读性。没有人想读取符号之间的数百个换行符并将文件向右滚动数千列以找到;. 程序员负责使其代码对其他人可读,以便以后可以理解代码,以便轻松发现错误,修补它,继续开发。

PS。C++ 没有这样的东西,但是因为 C 和 C++ 共享大部分语法规则,我想我可以提一下The International Obfuscated C Code Contest,目标是用 C 编写混淆代码。参赛者经常使用你的规则可以在语法标记之间放置空格,例如从其程序的源代码创建图像或星形或不同的形状。


推荐阅读