如何动态分配单个int [10]对象?

用户名

显然,这是行不通的,因为它被解释为分配了一个数组int

int (*ptr)[10] = new int[10];

令人惊讶的是,这也不起作用:

typedef int arr10[10];
arr10 *ptr = new arr10;

这确实有效:

ptr = new int[1][10];

但它使用new[]而不是new

出于我自己的好奇心,是否可以使用new分配单个类型的对象int[10],而不是使用new[]分配10个对象的数组或一个int[10]对象的数组

运营商

这不可能。C ++中的数组不具有一流的对象语义,例如,它们不能传递给function *或从函数返回。

您可以在C ++ 11中使用std :: array。它具有许多优点:对象语义,调试模式下的索引检查,迭代器和STL接口,size()方法,无需隐式转换为指针。当您可以使用C ++ 11编译器时,几乎没有理由再使用普通的旧C数组了。


*只能传递指向元素的指针或指向数组的指针/引用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章