Как sizeof(array)работает во время выполнения?

Я читал этот оператор sizeof в C интерпретируется во время компиляции, и поскольку во время компиляции компилятор знает размер массива и его тип, sizeof может вычислить количество байтов, занимаемых массивом. Но как работает sizeof для следующего кода:

 #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;
 }

Здесь размер массива неизвестен во время компиляции, тогда как он работает правильно?

24
задан dark_shadow 9 April 2012 в 19:02
поделиться