C ++ ไม่ส่งคืนอาร์เรย์ทั้งหมด แต่สามารถส่งคืนตัวชี้ไปยังอาร์เรย์ได้ ภายนอกฟังก์ชันไม่สามารถส่งคืนที่อยู่ของตัวแปรท้องถิ่นได้ การทำให้ตัวแปรท้องถิ่นเป็นแบบคงที่ จะสามารถส่งคืนที่อยู่ของตัวแปรท้องถิ่นได้
ต่อไปนี้เป็นไวยากรณ์เพื่อส่งคืนตัวชี้
int * function_name() { body }
ที่นี่
function_name − ชื่อของฟังก์ชันที่ผู้ใช้กำหนด
ต่อไปนี้คือตัวอย่างการคืนค่าอาร์เรย์จากฟังก์ชัน
ตัวอย่าง
#include <iostream> using namespace std; int * ret() { static int x[3]; for(int i=0 ; i<5 ; i++) { cout << " " <<&x[i]; } return x; } int main() { ret(); return 0; }
ผลลัพธ์
0x601180 0x601184 0x601188 0x60118c 0x601190
ในโปรแกรมข้างต้น ฟังก์ชัน ret() จะถูกสร้างขึ้นและจะคืนค่าอาร์เรย์ มีการประกาศอาร์เรย์ประเภท int แบบคงที่และพิมพ์ที่อยู่ของบล็อกหน่วยความจำที่จัดสรรไว้
int * ret() { static int x[3]; for(int i=0 ; i<5 ; i++) { cout << " " <<&x[i]; } return x; }
ในฟังก์ชัน main() ฟังก์ชัน ret() จะถูกเรียก −
ret();