যদি ফাংশন কল করার সময় অ্যারের একটি উপাদানের অ্যাড্রেস পাস করা হয়, তখন সেটাকে কল বাই রেফারেন্স (call by reference) বলে। ফাংশন প্যারামিটার হিসেবে পয়েন্টার থাকতে হয় যাতে অ্যাড্রেস রিসিভ করতে পারে।
উদাহরণ কোড: প্রতিটি উপাদানের অ্যাড্রেস পাস করে প্রিন্ট করা
#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] দিয়ে i-তম উপাদানের অ্যাড্রেস পাস করা হয়েছে। ফাংশন show পয়েন্টার ডিরেফারেন্স করে *num প্রিন্ট করে। এটি পুরো অ্যারে রেফারেন্স দিয়ে পাস করার উদাহরণ নয় — বরং প্রতিটি উপাদান আলাদা করে পাস করা হয়েছে।
পুরো অ্যারে রেফারেন্স দিয়ে পাস করার সঠিক পদ্ধতি (C++11+):
void func(int (&arr)[10]) { ... } // ১০ আকারের অ্যারের রেফারেন্স
// বা
#include <array>
void func(array<int, 10> &arr) { ... } // std::array রেফারেন্স