这里需要常量表达式,意味着我们不能首先获取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;
}
还请告诉我它是动态内存分配。如果是,那么它与新的有什么不同。因为两者都在运行时分配内存,这也是。
答案 0 :(得分:1)
您的代码无效C90,但有效C99。
可变长度数组不被视为动态内存分配,因为该术语用于指代基于堆的分配器(例如malloc()
)。但它们是动态的,因为分配的大小只能在执行时计算。
答案 1 :(得分:-3)
a [n],在这种情况下,您应该尝试将n替换为某个值,例如:-a [100] 希望这样能解决您的错误。 祝你好运。