Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เหตุใด C ++ ไม่รองรับฟังก์ชันที่ส่งคืนอาร์เรย์


ให้เราพิจารณาโปรแกรมต่อไปนี้

#include <iostream>
using namespace std;
int* Array() {
   int a[100];
   a[0] = 7;
   a[1] = 6;
   a[2] = 4;
   a[3] = 3;
   return a;
}
int main() {
   int* p = Array();
   cout << p[0] << " " << p[1]<<" "<<p[2]<<" "<<p[3];
   return 0;
}

ในโปรแกรมนี้ เราได้รับคำเตือนเป็น

ผลลัพธ์

In function 'int* Array()':
warning: address of local variable 'a' returned [-Wreturn-local-addr]
int a[100];

เราส่งคืนที่อยู่ของตัวแปรท้องถิ่น แต่สิ่งนี้ไม่สามารถทำได้เนื่องจากตัวแปรท้องถิ่นอาจไม่มีอยู่ในหน่วยความจำหลังจากสิ้นสุดการเรียกใช้ฟังก์ชัน ดังนั้น C++ จึงไม่รองรับฟังก์ชันส่งคืนอาร์เรย์