显然,这是行不通的,因为它被解释为分配了一个数组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] 删除。
我来说两句