あなたの質問には実際には2つの部分があります。
1 /配列外の配列の定数サイズを宣言するにはどうすればよいですか?
マクロを使用できます
#define ARRAY_SIZE 10
...
int myArray[ARRAY_SIZE];
または定数を使用します
const int ARRAY_SIZE = 10;
...
int myArray[ARRAY_SIZE];
配列を初期化し、そのサイズを知る必要がある場合は、次のことができます。
int myArray[] = {1, 2, 3, 4, 5};
const int ARRAY_SIZE = sizeof(myArray) / sizeof(int);
2番目sizeof
は、配列の各要素のタイプです(ここ)int
。
2 /サイズが動的な(実行時までわからない)配列を作成するにはどうすればよいですか?
そのためには、動的割り当てが必要です。これはArduinoで機能しますが、「ヒープ」が断片化される可能性があるため、通常は推奨されません。
あなたがすることができます(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));
}
または(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];
ヒープの断片化に関する問題の詳細については、この質問を参照できます。