En Arduino la función sizeof() devuelve el número de bytes que ocupa una variable o array. También podemos usarla para saber el número de elementos que tiene un array, para ello se obtiene el tamaño en bytes del array y se divide por el tamaño que tiene el tipo de dato que estamos usando:
1 2 |
int array[] = {1,2,3,4,5,6,10}; int size = sizeof(array)/sizeof(int); // size == 7 |
De este modo sizeof(array) devuelve 14 porque el array tiene 7 elementos y cada uno de ellos ocupa 2 bytes, ese 14 se divide después por sizeof(int), 2 bytes, y da como resultado 7 elementos.
Para que el código sea genérico y no haya que indicarle el tipo de dato, se puede usar el siguiente código:
1 2 |
int array[] = {1,2,3,4,5,6,10}; int size = sizeof(array)/sizeof(*array); // size == 7 |
El problema es que queda feo y muy largo si debemos de repetirlo muchas veces. Por ello otra solución mas ingeniosa seria crearnos una macro que contenga ese código.
1 2 3 4 |
#define count(x) sizeof(x)/sizeof(*x) int array[] = {1,2,3,4,5,6,10}; int size = count(array); // size == 7 |