Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ 함수에서 로컬 배열을 반환하는 방법은 무엇입니까?


로컬 배열은 함수 호출 후 메모리에 존재하지 않을 수 있으므로 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;
}