C语言:整型值N在for循环前为输入值,在经过for循环后锁定为4,问各位大佬是何原因?(若改为a[i] = i + 2, 则N变为6,也不知为何)

int main(void)
{
int N = 0;
int a[N];
int flag;
int i;

while(1)
{
    printf("Please input the scale of array:\n");
    flag = scanf("%d", &N);
    fflush(stdin);
    **printf("for循环前:N=%d\n", N);
    for( i = 0; i < N ; i++)
        a[i] = i ;
    printf("for循环后:N=%d\n", N);**

    if(!flag)
        break;

    putchar('\n');

}


return 0;

}

int N = 0;
int a[N];

竟然不会报错?

定制数组 只能是常量,不能是变量;

最浅显的办法: 把 int a[N];改成int a[6]

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^