A kérdésednek valójában 2 része van.
1 / Hogyan tudom deklarálni a tömb állandó méretét a tömbön kívül?
használjon makrót
#define ARRAY_SIZE 10 ... int myArray [ARRAY_SIZE];
vagy használjon konstans
const int ARRAY_SIZE = 10; ... int myArray [ARRAY_SIZE];
ha inicializálta a tömböt, és tudnia kell a méretét, akkor megteheti:
int myArray [] = {1, 2, 3, 4, 5}; const int ARRAY_SIZE = sizeof (myArray) / sizeof (int);
a második a sizeof a tömb minden elemének típusánál szerepel, itt int
.
2 / Hogyan lehet egy tömb, amelynek mérete dinamikus ( azaz futásidejéig nem ismert)?
Ehhez dinamikus elosztásra lesz szükség, amely működik az Arduino-n, de általában nem ajánlott, mivel ez a "halom" szétaprózódását okozhatja. p>
Megteheti (C út):
// Declarationint * myArray = 0; int myArraySize = 0; // Allocation (le t feltételezzük, hogy a méret tartalmaz néhány futás közben felfedezett értéket, // pl. valamilyen külső forrásból nyert) if (myArray! = 0) {myArray = (int *) realloc (myArray, size * sizeof (int));} else {myArray = (int *) malloc (size * sizeof (int)) ;}
Vagy (C ++ módon):
// Declarationint * myArray = 0; int myArraySize = 0; // Allocation (tegyük fel, hogy a méret tartalmaz futás közben felfedezett valamilyen érték, // pl. valamilyen külső forrásból vagy más programlogikából származik) if (myArray! = 0) {delete [] myArray;} myArray = new int [size];
Ha többet szeretne tudni a kupac töredezettségével kapcsolatos problémákról, olvassa el ezt a kérdést.