如何使用array new初始化x的值:
int (*x)[5] = ?
new int[5]
不起作用,因为它的类型为int*
您是否必须使用C风格演员如下?
int (*x)[5] = (int( *)[5])(new int[5]);
答案 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];
不,你不应该使用演员,演员阵容很少是正确的解决方案,特别是初学者。