c – 为什么初始化列表初始化需要堆分配数组的大小?

虽然我可以写

int n[] {1, 2, 3};

我不能写

int *m = new int[] {1, 2, 3};

应该是

int *m = new int[3] {1, 2, 3};

这是什么原因?

最佳答案
请记住,new实际上是C中的运算符.

这是因为定义了新的运算符;即它明确地需要所请求存储器的大小作为输入参数.因此,初始化程序列表成员的数量不会推断出它.

转载注明原文:c – 为什么初始化列表初始化需要堆分配数组的大小? - 代码日志