সি-তে আমরা দুটি ভিন্ন উপায়ে প্যারামিটার পাস করতে পারি। এগুলি হল মূল্য দ্বারা কল, এবং ঠিকানা দ্বারা কল, C++ এ, আমরা অন্য একটি কৌশল পেতে পারি। এটি রেফারেন্স দ্বারা কল বলা হয়। আসুন দেখি এগুলোর প্রভাব, এবং এগুলো কিভাবে কাজ করে।
প্রথমে আমরা মান দ্বারা কল দেখতে পাব। এই কৌশলে, প্যারামিটারগুলি ফাংশন আর্গুমেন্টে অনুলিপি করা হয়। তাই যদি কিছু পরিবর্তন করা হয়, তাহলে তা কপি করা মান আপডেট করবে, প্রকৃত মান নয়।
উদাহরণ
#include <iostream> using namespace std; void my_swap(int x, int y) { int temp; temp = x; x = y; y = temp; } int main() { int a, b; a = 10; b = 40; cout << "(a,b) = (" << a << ", " << b << ")\n"; my_swap(a, b); cout << "(a,b) = (" << a << ", " << b << ")\n"; }
আউটপুট
(a,b) = (10, 40) (a,b) = (10, 40)
ঠিকানা দ্বারা কল ফাংশনে ভেরিয়েবলের ঠিকানা পাস করে কাজ করে। সুতরাং যখন ফাংশনটি সেই ঠিকানা দ্বারা নির্দেশিত মানের উপর আপডেট হবে, প্রকৃত মান স্বয়ংক্রিয়ভাবে আপডেট হবে।
উদাহরণ
#include <iostream> using namespace std; void my_swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; } int main() { int a, b; a = 10; b = 40; cout << "(a,b) = (" << a << ", " << b << ")\n"; my_swap(&a, &b); cout << "(a,b) = (" << a << ", " << b << ")\n"; }
আউটপুট
(a,b) = (10, 40) (a,b) = (40, 10)
ঠিকানা দ্বারা কলের মত, এখানে আমরা রেফারেন্স দ্বারা কল ব্যবহার করছি। এটি শুধুমাত্র C++ বৈশিষ্ট্য। আমাদের আর্গুমেন্টের রেফারেন্স ভেরিয়েবলটি পাস করতে হবে, তাই এটি আপডেট করার জন্য, প্রকৃত মান আপডেট করা হবে। শুধুমাত্র ফাংশনের সংজ্ঞায়, আমাদেরকে পরিবর্তনশীল নামের আগে &রাখতে হবে।
উদাহরণ
#include <iostream> using namespace std; void my_swap(int &x, int &y) { int temp; temp = x; x = y; y = temp; } int main() { int a, b; a = 10; b = 40; cout << "(a,b) = (" << a << ", " << b << ")\n"; my_swap(a, b); cout << "(a,b) = (" << a << ", " << b << ")\n"; }
আউটপুট
(a,b) = (10, 40) (a,b) = (40, 10)