Computer >> Máy Tính >  >> Lập trình >> C ++

Làm cách nào để trả về mảng cục bộ từ một hàm C ++?


Một mảng cục bộ không thể được trả về trực tiếp từ một hàm C ++ vì nó có thể không tồn tại trong bộ nhớ sau khi gọi hàm. Một cách để giải quyết điều này là sử dụng một mảng tĩnh trong hàm. Vì thời gian tồn tại của mảng tĩnh là toàn bộ chương trình, nên nó có thể dễ dàng được trả về từ một hàm C ++ mà không gặp vấn đề ở trên.

Một chương trình chứng minh điều này được đưa ra như sau.

Ví dụ

#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;
}

Đầu ra

Kết quả của chương trình trên như sau.

The array elements are: 1 2 3 4 5 6 7 8 9 10

Bây giờ chúng ta hãy hiểu chương trình trên.

Trong hàm retArray (), một mảng tĩnh arr được định nghĩa. Sau đó, một vòng lặp for được sử dụng để khởi tạo mảng này. Cuối cùng arr mảng được trả về. Đoạn mã hiển thị điều này như sau.

int *retArray() {
   static int arr[10];
   for(int i = 0; i<10; i++) {
      arr[i] = i+1;
   }
   return arr;
}

Trong hàm main (), hàm retArray () được gọi và ptr trỏ đến phần đầu của mảng arr. Các phần tử của mảng được hiển thị bằng vòng lặp for. Đoạn mã hiển thị điều này như sau.

int main() {
   int *ptr = retArray();
   cout <<"The array elements are: ";
   for(int i = 0; i<10; i++) {
      cout<< ptr[i] <<" ";
   }
   return 0;
}