Non capisco dove sia il problema: la dimensione dell'array arr_d2 viene calcolata utilizzando questo sistema:

1) la funzione sizeof() restituisce la dimensione in byte dell'elemento passato come parametro (nel tuo caso essa viene utilizzata come un operatore, ma l'essenziale rimane);

2) passando un array alla funzione, essa restituisce il numero di byte che l'array occupa in memoria

3) il valore calcolato precedentemente viene diviso per la quantità di memoria occupata da un singolo elemento dell'array (vedi il puntatore: *arr_d2)

4) questa operazione restituisce il numero di elementi di cui l'array è composto: totale spazio occupato da tutti diviso il totale spazio occupato da 1 = totale elementi nell'array.

Nota: l'ultima operazione serve a far capire che non c'entra se ci sono state delle inizializzazioni degli elementi o meno: tanto ciascun elemento occupa sempre lo stesso spazio, indipendentemente dal valore (un intero occupa sempre 4 byte [o 2, a seconda del S.O., compilatore, ecc.] sia che esso valga 0, sia che valga 10.000).


Ciao.