错误:声明数组时需要常量表达式,如[n]

时间:2014-05-26 17:25:17

标签: c arrays dynamic-arrays

这里需要常量表达式,意味着我们不能首先获取n的输入,然后将数组声明为int a [n]。

我的代码是:

#include <stdio.h>
int main() {
    int n;
    scanf("\n Enter the no. of elements of the array. %d", n);
    int a[n];
    for(int i=0; i<n; i++)
        scanf("\n Enter the elements of the array. %d", &a[i]);
    for(int j=0; j<n; j++)
        printf(" %d", a[j]);
    return 0;
}

还请告诉我它是动态内存分配。如果是,那么它与新的有什么不同。因为两者都在运行时分配内存,这也是。

2 个答案:

答案 0 :(得分:1)

您的代码无效C90,但有效C99。

可变长度数组不被视为动态内存分配,因为该术语用于指代基于堆的分配器(例如malloc())。但它们是动态的,因为分配的大小只能在执行时计算。

答案 1 :(得分:-3)

a [n],在这种情况下,您应该尝试将n替换为某个值,例如:-a [100] 希望这样能解决您的错误。 祝你好运。