如果在循环中多次声明该数组,会发生什么情况?

请参阅以下程序

#include<stdio.h>

int main(){
    int n = 3;
    while(5){
        int a[n];
        n--;
        if(n == 0)  break;
    }
}

所以这里数组a [n]被多次声明, *先前的声明会怎样? *分配给先前声明的内存会发生什么?重新声明时,它会返回系统吗?