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() จะมีการกำหนดอาร์เรย์อาร์เรย์แบบคงที่ จากนั้นใช้ for loop เพื่อเริ่มต้นอาร์เรย์นี้ ในที่สุดอาร์เรย์ arr จะถูกส่งกลับ ข้อมูลโค้ดที่แสดงเป็นดังนี้

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

ในฟังก์ชัน main() จะเรียกฟังก์ชัน retArray() และ ptr ชี้ไปที่จุดเริ่มต้นของอาร์เรย์ arr องค์ประกอบอาร์เรย์จะแสดงโดยใช้การวนซ้ำ ข้อมูลโค้ดที่แสดงเป็นดังนี้

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