C++/C++
Variable-Length Array 배열 매개변수로 넘기는 쉬운 방법
Elan
2021. 6. 12. 20:43
가변 길이 배열(Variable-Length Array)는 배열의 크기를 컴파일 타임이 아닌 런타임에 정하게 된다.
따라서 VLA를 함수의 매개변수로 배열을 전달받아 사용하는데 약간 까다로움이 있다.
여러가지 방법이 있겠지만 코드의 줄을 늘리지 않는 가장 간단한 방법을 소개하겠다.
아래의 3차원 배열을 예로 들어보겠다.
bool arr[10][10][10] = { 0, };
다음과 같은 함수에 위의 3차원 배열을 넘겨보겠다.
bool CheckAllIsVisited(bool* _arr, int max) {
for (size_t i = 0; i < max; i++) {
for (size_t j = 0; j < max; j++) {
for (size_t k = 0; k < max; k++) {
if (_arr[i * max * max + j * max + k] == false)
return false;
}
}
}
return true;
}
위의 3차원 배열을 매개변수로 1차원 포인터로 넘긴다.