Manejo de arreglos y punteros
1. Arreglos (Arrays) #
Un arreglo es una colección de variables del mismo tipo almacenadas de forma contigua en memoria. Cada elemento del arreglo se accede por un índice (empezando desde 0).
Sintaxis: #
1tipo nombre[tamaño];
Ejemplo: arreglo de enteros #
1int valores[5] = {10, 20, 30, 40, 50}; 2 3void setup() { 4 Serial.begin(9600); 5 for (int i = 0; i < 5; i++) { 6 Serial.println(valores[i]); 7 } 8}
2. Arreglos aplicados a sensores #
Si estás leyendo varios sensores, puedes almacenar las lecturas en un arreglo:
1const int sensores[] = {A0, A1, A2}; 2int lecturas[3]; 3 4void setup() { 5 Serial.begin(9600); 6} 7 8void loop() { 9 for (int i = 0; i < 3; i++) { 10 lecturas[i] = analogRead(sensores[i]); 11 Serial.print("Sensor "); 12 Serial.print(i); 13 Serial.print(": "); 14 Serial.println(lecturas[i]); 15 } 16 delay(1000); 17}
3. Punteros #
Un puntero es una variable que almacena la dirección de memoria de otra variable.
Declaración y uso: #
1int valor = 10; 2int* ptr = &valor; 3 4void setup() { 5 Serial.begin(9600); 6 Serial.print("Valor: "); 7 Serial.println(valor); 8 Serial.print("Dirección: "); 9 Serial.println((int)ptr); 10 Serial.print("Valor a través del puntero: "); 11 Serial.println(*ptr); // desreferenciación 12}
4. Punteros y arreglos #
En C, un arreglo es en realidad un puntero al primer elemento. Puedes recorrer un arreglo con un puntero:
1int datos[] = {1, 2, 3, 4, 5}; 2 3void setup() { 4 Serial.begin(9600); 5 int* p = datos; 6 7 for (int i = 0; i < 5; i++) { 8 Serial.print("Elemento "); 9 Serial.print(i); 10 Serial.print(": "); 11 Serial.println(*(p + i)); 12 } 13}
Resumen del tema
Conceptos clave #
- Arrays (Arreglos): colecciones homogéneas de datos almacenadas contiguamente en memoria, accesibles mediante índice de base cero (
array[i]). - Arrays en Sensores: agrupación de múltiples pines de entrada e historiales de lectura para iterar eficientemente con bucles
for. - Punteros (
*ptr): variables que almacenan direcciones de memoria obtenidas mediante el operador de referencia&. - Aritmética y Desreferenciación: el nombre de un array equivale a un puntero a su primer elemento;
*(p + i)accede al valor en la posición desplazada.
Qué debes recordar #
En lenguaje C, un arreglo y un puntero a su primer elemento están íntimamente vinculados, permitiendo recorrer estructuras de datos de manera compacta y eficiente.