C语言关于数组初始化的一些问题

#include
#define n 6
int main()
{
    int a[n]={2};
    int i;
    for(i=0;iprintf("%d",a[i]);
    return 0;
}


当我这样写是可以运行的

#include
int main()
{
    const int n = 6;
    int a[n]={2};
    int i;
    for(i=0;iprintf("%d",a[i]);
    return 0;
}


而当我在main函数里定义n,运行时第五行会报错,这是为什么?有人可以帮我解答一下吗?

你这个编译器要求数组长度必须是确定的值,不可以是变量,const都不行。也就是说在编译的时候就必须知道数组的长度