在初始化变长数组时,编译器给出一个错误信息: [Error] variable-sized object may not be initialized 代码片段: int n; printf("Enter size of magic square: "); scanf("%d",&n); int board[n][n] = {0}; 变长数组应如何初始化? 为什么所有的元素都没有按照下面的方式初始化为0 ; int board[n][n]; board[n][n] = {0}; ?
我试图build立一个两列可变长度的零matrix,我可以输出一个while循环的结果(打算用它来存储从调整时间步骤的欧拉方法的步骤数据)。 长度将由循环的迭代次数决定。 我想知道是否有一种方法可以在运行循环时执行此操作,或者是否需要将其设置为开始,以及如何执行此操作。
在过去的几年中,我并没有使用C语言。 当我今天看到这个问题时 ,我碰到了一些我不熟悉的C语法。 显然在C99中 ,以下语法是有效的: void foo(int n) { int values[n]; //Declare a variable length array } 这似乎是一个非常有用的function。 有没有关于将其添加到C ++标准的讨论,如果是的话,为什么它被省略? 一些潜在的原因: 供编译器厂商使用 与标准的其他部分不兼容 function可以与其他C ++结构模拟 C ++标准规定数组大小必须是一个常量expression式(8.3.4.1)。 是的,我当然知道,在玩具的例子中,可以使用std::vector<int> values(m); ,但是这从堆中分配内存而不是堆栈。 如果我想要一个multidimensional array,如: void foo(int x, int y, int z) { int values[x][y][z]; // Declare a variable length array } vector版本变得非常笨拙: void foo(int x, int y, […]