¿Cómo funciona sizeof (array) en tiempo de ejecución?

He leído que el operador sizeof en C se interpreta en tiempo de compilación y como el compilador en tiempo de compilación sabe el tamaño de la matriz y su tipo, sizeof puede calcular el número de bytes ocupados por la matriz. Pero, ¿cómo funciona sizeof para el siguiente código?

<code> #include<stdio.h>
 #include<string.h>
 int main()
 {
    int n;
    scanf("%d",&n);
    int a[n];
    int s=sizeof(a);
    printf("%d",s);
    return 0;
 }
</code>

Aquí no se conoce el tamaño de la matriz en el momento de la compilación, entonces, ¿cómo funciona correctamente?

Respuestas a la pregunta(6)

Su respuesta a la pregunta