로컬 배열은 함수 호출 후 메모리에 존재하지 않을 수 있으므로 C++ 함수에서 직접 반환할 수 없습니다. 이 문제를 해결하는 방법은 함수에서 정적 배열을 사용하는 것입니다. 정적 배열의 수명은 전체 프로그램이므로 위의 문제 없이 C++ 함수에서 쉽게 반환할 수 있습니다.
이를 보여주는 프로그램은 다음과 같습니다.
예시
#include <iostream> using namespace std; int *retArray() { static int arr[10]; for(int i = 0; i<10; i++) { arr[i] = i+1; } return arr; } int main() { int *ptr = retArray(); cout <<"The array elements are: "; for(int i = 0; i<10; i++) { cout<< ptr[i] <<" "; } return 0; }
출력
위 프로그램의 출력은 다음과 같습니다.
The array elements are: 1 2 3 4 5 6 7 8 9 10
이제 위의 프로그램을 이해합시다.
retArray() 함수에서 정적 배열 arr이 정의됩니다. 그런 다음 for 루프를 사용하여 이 배열을 초기화합니다. 마지막으로 배열 arr가 반환됩니다. 이를 보여주는 코드 스니펫은 다음과 같습니다.
int *retArray() { static int arr[10]; for(int i = 0; i<10; i++) { arr[i] = i+1; } return arr; }
main() 함수에서 retArray() 함수가 호출되고 ptr은 배열 arr의 시작을 가리킵니다. 배열 요소는 for 루프를 사용하여 표시됩니다. 이를 보여주는 코드 스니펫은 다음과 같습니다.
int main() { int *ptr = retArray(); cout <<"The array elements are: "; for(int i = 0; i<10; i++) { cout<< ptr[i] <<" "; } return 0; }