gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 17:21:17 26 4
gpt4 key购买 nike

显然这行不通,因为它被解释为分配一个 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++ 中的数组没有一流的对象语义,例如,它们不能传递给函数*或从函数返回。

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


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

关于c++ - 如何动态分配单个 int[10] 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33038802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com