动态数组分配末尾的 () 是啥意思?
Posted
技术标签:
【中文标题】动态数组分配末尾的 () 是啥意思?【英文标题】:What does the () at the end of dynamic array allocate mean?动态数组分配末尾的 () 是什么意思? 【发布时间】:2011-04-05 12:30:24 【问题描述】:我在一个不同的问题中看到了一些类似下面的例子,这是我以前从未见过的。
new int[m_size]();
^^
我一直都看到并使用过new int[m_size]
版本,但最后没有()
版本。
【问题讨论】:
***.com/questions/620137/… 【参考方案1】:两个字:Value Initialization
new int[m_size]();
数组元素将通过写入 ()
进行零初始化,因为 ()
意味着值初始化。1(基元类型的零初始化)
1: 初始化器为空括号集的对象,即 (),应进行值初始化。 ($8.5/7)
【讨论】:
啊!那么它值初始化哪种类型呢?是整个表达式的指针类型还是数组的各个成员? @MeThinks:查看8.5/5
(值初始化)。对于原始类型 值初始化 => 零初始化。在这种情况下,数组的所有元素将被初始化为0
好的。在标准中得到它“如果 T 是一个数组类型,那么每个元素都是值初始化的”。感谢您的及时回复。我第一次遇到关于数组的问题。【参考方案2】:
这意味着所有元素都是zero initialized
,类似于calloc(o,sizeof(int))
,使用这个calloc,你用0
在堆上初始化一个整数
【讨论】:
以上是关于动态数组分配末尾的 () 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章