Diferencia entre revisiones de «sizeof()»
De ArduWiki
(→Ejemplo 2) |
(→Ejemplo 1) |
||
Línea 23: | Línea 23: | ||
== Ejemplo 1 == | == Ejemplo 1 == | ||
+ | Para obtener la cantidad de elementos solo hay que dividir entre el numero de bytes de cada elemento | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
int valores[] = {1023, 45056, 77}; | int valores[] = {1023, 45056, 77}; | ||
− | byte indice = sizeof(valores) / sizeof(int); | + | byte indice = sizeof(valores) / sizeof(int); //3 elementos |
− | + | bool A[][4] = {{0,1,0,0}, {0,0,1,0}, {0,1,1,0}}; | |
− | byte indice = sizeof(A) / 4 * sizeof( | + | byte indice = sizeof(A) / (4 * sizeof(bool)); //3 fila + 4 columnas |
</syntaxhighlight> | </syntaxhighlight> | ||
Revisión del 14:58 16 mar 2020
Contenido
Descripción
Evalúa el tamaño de memoria reservado para una variable o matriz en bytes. Acepta cualquier tipo de datos: char, byte, int, word, long, double, float, etc.
Sintexis
sizeof(variable); sizeof(matriz);
Parámetros
Retorna
Número de bytes ocupados por variable o matriz. size_t
Advertencias
- sizeof() al contar en bytes, solo coincide con la cantidad de elementos si son tipo char o byte.
- Si quieres hallar el numero de elementos de una matriz: int, long, double o float. Lo más correcto sería:
sizeof(matriz) / sizeof(matriz[0])
Para así obtener el tamaño en cantidad de elementos y no en bytes.
Ejemplo 1
Para obtener la cantidad de elementos solo hay que dividir entre el numero de bytes de cada elemento
int valores[] = {1023, 45056, 77};
byte indice = sizeof(valores) / sizeof(int); //3 elementos
bool A[][4] = {{0,1,0,0}, {0,0,1,0}, {0,1,1,0}};
byte indice = sizeof(A) / (4 * sizeof(bool)); //3 fila + 4 columnas
Ejemplo 2
Ejemplo practico.
void setup() {
Serial.begin(9600);
int A[][4] = {{1024,5000,0,24344}, {11111,3000,12345,670}, {0,10000,1,62000}};
byte A1 = sizeof(A);
byte A2 = sizeof(A) / sizeof(int);
byte A3 = sizeof(A) / (4 * sizeof(int));
Serial.println(A1); //24 bytes
Serial.println(A2); //12 elementos
Serial.println(A3); //3 filas + 4 columnas
}
void loop(){
//Nada
}
Ejemplo 3
Creamos una matriz de caracteres con cierto valor y luego mostramos carácter a carácter.
const byte matriz[]="Esto es una matriz";
void setup(){
Serial.begin(115200);
for (byte i=0; i<sizeof(matriz)-1; i++{
Serial.write(matriz[i]); //Caracter
Serial.print(" = ");
Serial.println(matriz[i]); //Codigo ASCII
delay(100);
}
}
void loop(){
//Nada
}