Nuestro equipo de trabajo ha pasado horas investigando para dar espuestas a tus preguntas, te regalamos la resolución por esto nuestro deseo es serte de gran ayuda.
Solución:
Su pregunta tiene 2 partes en realidad.
1/ ¿Cómo puedo declarar el tamaño constante de un array afuera de array?
Puedes usar un macro
#define ARRAY_SIZE 10
...
int myArray[ARRAY_SIZE];
o usar una constante
const int ARRAY_SIZE = 10;
...
int myArray[ARRAY_SIZE];
si inicializaste el array y necesita saber su tamaño, entonces puede hacer:
int myArray[] = 1, 2, 3, 4, 5;
const int ARRAY_SIZE = sizeof(myArray) / sizeof(int);
el segundo sizeof
depende del tipo de cada elemento de su arrayaquí int
.
2/ ¿Cómo puedo tener un array ¿Qué tamaño es dinámico (es decir, no se conoce hasta el tiempo de ejecución)?
Para eso, necesitará una asignación dinámica, que funciona en Arduino, pero generalmente no se recomienda, ya que esto puede causar que el “montón” se fragmente.
Puedes hacer (forma C):
// Declaration
int* myArray = 0;
int myArraySize = 0;
// Allocation (let's suppose size contains some value discovered at runtime,
// e.g. obtained from some external source)
if (myArray != 0)
myArray = (int*) realloc(myArray, size * sizeof(int));
else
myArray = (int*) malloc(size * sizeof(int));
O (forma C++):
// Declaration
int* myArray = 0;
int myArraySize = 0;
// Allocation (let's suppose size contains some value discovered at runtime,
// e.g. obtained from some external source or through other program logic)
if (myArray != 0)
delete [] myArray;
myArray = new int [size];
Para obtener más información sobre los problemas con la fragmentación del montón, puede consultar esta pregunta.
Te mostramos comentarios y puntuaciones
Tienes la opción de añadir valor a nuestro contenido informacional participando con tu veteranía en las anotaciones.