删除的 [] 应该放在哪里?
Where should [] of delete be put?
考虑:
int *arr = new int[10];
我已经看到了三种编写释放arr
的代码行的方法:delete[] arr
、delete [] arr
和delete []arr
。首先,既然delete[]
是运算符的名称,为什么在delete
和方括号之间引入空格是合法的?第二,各种方式背后的逻辑是什么,应该首选哪种方式?
为什么在
删除和方括号之间引入空格是合法的?
因为语言语法允许。
通常在大多数上下文中,空格(制表符、换行符、空格(会被忽略。空格用于分隔单词,但如果编译器知道[
]
是单独的符号,则忽略空格。以下行的含义相同:
delete[]arr;
delete []arr;
delete [] arr;
delete[] arr;
delete [ ] arr ;
换行符或制表符也会被忽略:
delete
[
]
arr
;
他们的意思是一样的,做同样的事情。
各种方式背后的逻辑是什么,应该首选哪种方式?
逻辑是可维护性和可读性。没有人愿意阅读符号之间的数百个换行符并向右滚动文件千列以查找;
.程序员负责使代码对其他人来说是可读的,以便以后可以理解代码,以便很容易找到错误,修补它,继续开发。
附言。C++没有这样的事情,但是因为C和C++共享大多数语法规则,我想我可以提到国际混淆C代码竞赛,其目标是用C编写混淆代码.参赛者经常使用规则,您可以在语法标记之间放置空格,例如从其程序的源代码中创建图像或星星或不同的形状。
这取决于您正在处理的项目的编码准则。但是您最常使用delete[]
,因为它在您删除数组的第一眼就可以看到。
为什么允许拥有这些不同的写作,是你需要问定义语法的人的事情,也许他们不确定最好的风格是什么,因此允许两者兼而有之。
相关文章:
- 如何在自删除后将对象设置为nullptr
- C++我需要了解在哪里使用指针和双指针
- 未定义的引用在哪里
- 谷歌测试中的期望值存储在哪里
- 尽管遵循了规则,内存泄漏在哪里
- 静态数据成员模板专用化的实例化点在哪里
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 在哪里声明结构运算符重载
- C++ 中的自定义异常:在哪里定义它们?
- 常量参数存储在哪里 (C++)?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 此递归函数的每次迭代的值存储在哪里?
- 工厂方法创建的对象应该在哪里删除?
- 文档在哪里说明如果参数不是从末端删除参数,则无法从QT信号插槽连接中删除参数?
- 当我删除数组时,指针在哪里?指向数组的指针与数组中的元素之间的区别
- 在下面的函数中,我想反转链表,但我想知道在哪里可以删除节点
- 内存运行时错误:我们在哪里删除这个指针
- 在这段代码中new创建的指针在哪里被删除?
- C++内存泄漏 - 我删除什么,在哪里删除
- 在哪里删除对象?我超出了范围