Originariamente inviato da giuseppe500
a livello di compilazione eh?
E' come dividere in un espressione algebrica tra il size di tutto l'array e un elemento dell'array in quanto la grandezza dell' elemento non č piu ' importante perche divisa sopra e sotto?
č cosi' ?
grazie
sizeof (theArray) = dimensione in byte dell'array;
sizeof (theArray[0]) = dimensioni in byte del primo elemento dell'array;

Siccome gli elementi di un array hanno tutte le stesse dimensioni, ne consegue che:
sizeof (theArray) / sizeof (theArray[0]) = numero elementi dell'array;

Il tutto a livello di compilazione.

Insisto theArray DEVE essere un vero array. Se fosse un puntatore il ragionamento NON funzionerebbe:

Codice PHP:
#include <iostream>

#define DIM_OF_ARRAY(theArray) (sizeof (theArray)/sizeof(theArray[0]))

int main (void){    
    const 
int aArray []={12345678910};
    const 
int aPointer aArray;
    
std::cout << DIM_OF_ARRAY (aArray) << std::endl// stampa 10
    
std::cout << DIM_OF_ARRAY (aPointer) << std::endl// stampa 1
    
return 0;