Ho letto che l'operatore sizeof in C viene interpretato in fase di compilazione e poiché al momento della compilazione il compilatore conosce la dimensione dell'array e il suo tipo, sizeof è utilizzato per calcolare il numero di byte occupati dall'array. Ma come funziona sizeof working per il seguente codice:Come sizeof (array) funziona in fase di runtime?
#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;
}
Qui dimensione della matrice non è noto al momento della compilazione, allora come sta funzionando correttamente?
possibile duplicato di [Utilizzo di sizeof con una matrice allocata dinamicamente] (http://stackoverflow.com/questions/2731500/using-sizeof-with-a-dinamically-allocated-array) –
Le matrici di lunghezza variabile rappresentano un'eccezione, per loro, 'sizeof' viene valutato in fase di esecuzione, non in fase di compilazione. –
@ MДΓΓБДLL No, si tratta di cose 'malloc'ed, non di VLA. –