Sorunuz aslında 2 bölümden oluşuyor.
1 / Dizinin dışındaki bir dizinin sabit boyutunu nasıl bildirebilirim?
Bir makro kullanabilirsiniz
#define ARRAY_SIZE 10
...
int myArray[ARRAY_SIZE];
veya sabit kullanın
const int ARRAY_SIZE = 10;
...
int myArray[ARRAY_SIZE];
diziyi başlattıysanız ve boyutunu bilmeniz gerekiyorsa şunları yapabilirsiniz:
int myArray[] = {1, 2, 3, 4, 5};
const int ARRAY_SIZE = sizeof(myArray) / sizeof(int);
ikincisi sizeof
, dizinizin her öğesinin türünde, burada int
.
2 / Boyutu dinamik olan bir diziye nasıl sahip olabilirim (yani çalışma zamanına kadar bilinmiyor)?
Bunun için Arduino üzerinde çalışan dinamik ayırmaya ihtiyacınız olacak, ancak genellikle "yığın" ın parçalanmasına neden olabileceği için tavsiye edilmez.
Şunları yapabilirsiniz (C yolu):
// 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));
}
Veya (C ++ yolu):
// 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];
Yığın parçalanmasıyla ilgili sorunlar hakkında daha fazla bilgi için bu soruya başvurabilirsiniz .