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 []={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
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;
}