หากเราส่งที่อยู่ของอาร์เรย์ขณะเรียกฟังก์ชัน เรียกว่า function call by reference ฟังก์ชันควรมีพารามิเตอร์เป็น pointer เพื่อรับที่อยู่ที่ส่งมา
โค้ดตัวอย่าง
#include <iostream>
using namespace std;
void show(int *num) {
cout << *num;
}
int main() {
int a[] = {3, 2, 1, 6, 7, 4, 5, 0, 10, 8};
for (int i = 0; i < 10; i++) {
show(&a[i]); // ส่งที่อยู่ของแต่ละองค์ประกอบ
}
return 0;
}
ผลลัพธ์
32167450108
คำอธิบายเพิ่มเติม: ตัวอย่างนี้ส่งที่อยู่ของแต่ละสมาชิก (&a[i]) ไปทีละตัว ไม่ใช่ส่งอาร์เรย์ทั้งลูก ใน C++ สามารถส่งอาร์เรย์โดยอ้างอิงจริงได้ด้วย syntax:
void func(int (&arr)[10]); // reference to array of 10 int void func(int (&arr)[]); // C++20: reference to array of unknown bound
หรือใช้ std::array/std::vector/std::span ซึ่งทันสมัยและปลอดภัยกว่า