귀하의 질문에는 실제로 두 부분이 있습니다.
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);
두 번째 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];
힙 조각화 문제에 대한 자세한 내용은 이 질문을 참조하십시오 .