এখানে আমরা দেখব সি++-এ কোনো ভেরিয়েবলের রেফারেন্স কীভাবে পাস করা যায়। এটাকে কখনও কখনও কল বাই রেফারেন্স (Call by Reference) বলা হয়।
কল বাই রেফারেন্স মেথডে, আর্গুমেন্টের রেফারেন্স ফাংশনে কপি হয়। ফাংশনের ভেতরে রেফারেন্স ব্যবহার করে আসল আর্গুমেন্ট এক্সেস করা হয়। এর মানে হলো প্যারামিটারে করা যেকোনো পরিবর্তন পাস করা আর্গুমেন্টকে প্রভাবিত করে।
মান রেফারেন্স দিয়ে পাস করতে হলে, আর্গুমেন্ট রেফারেন্স ফাংশনে পাস করা হয় অন্য যেকোনো মানের মতো। তাই আপনাকে ফাংশন প্যারামিটারগুলো রেফারেন্স টাইপ হিসেবে ডিক্লেয়ার করতে হবে, যেমন নিচের swap() ফাংশনে, যা দুটি পূর্ণসংখ্যা ভেরিয়েবলের মান এক্সচেঞ্জ করে যেগুলোর পয়েন্টার আর্গুমেন্ট হিসেবে পাস করা হয়েছে।
উদাহরণ: swap ফাংশন ডেফিনিশন
// ফাংশন ডেফিনিশন মান সওয়াপ করার জন্য
void swap(int &x, int &y) {
int temp;
temp = x; /* x-এর ঠিকানার মান সংরক্ষণ */
x = y; /* y কে x-এ রাখা */
y = temp; /* x কে y-এ রাখা */
return;
}
এখন swap() ফাংশনটি কল করি রেফারেন্স দিয়ে মান পাস করে:
উদাহরণ: মূল প্রোগ্রাম
#include <iostream>
using namespace std;
// ফাংশন ডিক্লেরেশন
void swap(int &x, int &y);
int main() {
// লোকাল ভেরিয়েবল ডিক্লেরেশন
int a = 100;
int b = 200;
cout << "Before swap, value of a :" << a << endl;
cout << "Before swap, value of b :" << b << endl;
/* ভেরিয়েবল রেফারেন্স ব্যবহার করে মান সওয়াপ করার জন্য ফাংশন কল */
swap(a, b);
cout << "After swap, value of a :" << a << endl;
cout << "After swap, value of b :" << b << endl;
return 0;
}
আউটপুট
Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :200 After swap, value of b :100