I was writing the following code
#include<stdio.h>
void fun(int n) {
    int a[n] = {0};
}
void main() {
    int a[4] = {0};
    int i = 0;
    fun(3);
}
and got this error
test.c: In function 'fun':
test.c:5:5: error: variable-sized object may not be initialized
while if I change the function fun to:-
void fun(int n) {
    int a[n], i = 0;
    for(i = 0; i < n; i++) {
        a[i] = 0;
    }
}
it works fine. I know that the error is occuring because it's not allowed in the compiler's specification but what i want to know is why is it not possible to be implemented? Is it due to some compile time or run time evaluation issue? I have seen the answer of other question but i need a more elaborated answer.
 
     
     
     
    