如何使用C ++中的new定义固定大小的数组

时间:2018-02-10 09:41:29

标签: c++

如何使用array new初始化x的值:

int (*x)[5] = ?

new int[5]不起作用,因为它的类型为int*

您是否必须使用C风格演员如下?

int (*x)[5] = (int( *)[5])(new int[5]);

2 个答案:

答案 0 :(得分:5)

C ++中固定大小的数组是std::array

并且,从指向数组int (*x)[5]的指针猜测,这可能是

std::array<int, 5> x;

std::array<int, 5> *x = new std::array<int, 5>;

虽然前者是首选,但除非确实需要将数组放在堆上。

如果您需要可变数量的固定大小的数组,请将其与std::vector

结合使用
std::vector<std::array<int, 5> > x;

答案 1 :(得分:1)

这有效

typedef int int5[5];

int main()
{
    int (*x)[5] = new int5[1];
    return 0;
}

如果没有typedef,可能有办法实现,但我没有进行太多调查。

更新

有点反直觉这也是正确的

int (*x)[5] = new int[1][5];

不,你不应该使用演员,演员阵容很少是正确的解决方案,特别是初学者。