কম্পিউটার টিউটোরিয়াল

সি/সি++-এ প্যারামিটার পাসিং পদ্ধতি: কল বাই ভ্যালু, অ্যাড্রেস ও রেফারেন্স

সি/সি++-এ ফাংশনে আর্গুমেন্ট পাস করার তিনটি প্রধান পদ্ধতি রয়েছে। এগুলো হলো:

১. কল বাই ভ্যালু (Call by Value)

এই পদ্ধতিতে আর্গুমেন্টের মান কপি হয়ে ফাংশনের প্যারামিটারে যায়। ফাংশনের ভেতরে পরিবর্তন করলে মূল ভেরিয়েবল পরিবর্তিত হয় না।

উদাহরণ

#include <iostream>
using namespace std;

void my_swap(int x, int y) {
    int temp = x;
    x = y;
    y = temp;
}

int main() {
    int a = 10, b = 40;
    cout << "(a,b) = (" << a << ", " << b << ")\n";
    my_swap(a, b);
    cout << "(a,b) = (" << a << ", " << b << ")\n";
    return 0;
}

আউটপুট

(a,b) = (10, 40)
(a,b) = (10, 40)

মূল ভেরিয়েবল a এবং b এর মান অপরিবর্তিত থাকে।

২. কল বাই অ্যাড্রেস (Call by Address)

এই পদ্ধতিতে ভেরিয়েবলের মেমরি অ্যাড্রেস পাস করা হয়। ফাংশন পয়েন্টার দিয়ে মূল মেমরি লোকেশন এক্সেস করে এবং মান পরিবর্তন করতে পারে।

উদাহরণ

#include <iostream>
using namespace std;

void my_swap(int *x, int *y) {
    int temp = *x;
    *x = *y;
    *y = temp;
}

int main() {
    int a = 10, b = 40;
    cout << "(a,b) = (" << a << ", " << b << ")\n";
    my_swap(&a, &b);
    cout << "(a,b) = (" << a << ", " << b << ")\n";
    return 0;
}

আউটপুট

(a,b) = (10, 40)
(a,b) = (40, 10)

এবার মূল ভেরিয়েবলগুলোই সওয়াপ হয়েছে।

৩. কল বাই রেফারেন্স (Call by Reference) — শুধু C++

সি++-এ রেফারেন্স ভেরিয়েবল (&) ব্যবহার করে এই পদ্ধতি কাজ করে। এটি কল বাই অ্যাড্রেসের মতোই কাজ করে কিন্তু সিনট্যাক্স সহজ।

উদাহরণ

#include <iostream>
using namespace std;

void my_swap(int &x, int &y) {
    int temp = x;
    x = y;
    y = temp;
}

int main() {
    int a = 10, b = 40;
    cout << "(a,b) = (" << a << ", " << b << ")\n";
    my_swap(a, b); // এড্রেস অফ অপারেটর (&) লাগে না
    cout << "(a,b) = (" << a << ", " << b << ")\n";
    return 0;
}

আউটপুট

(a,b) = (10, 40)
(a,b) = (40, 10)

তুলনামূলক সারসংক্ষেপ

পদ্ধতিসি-তে?সি++-তে?মূল মান পরিবর্তন হয়?সিনট্যাক্স
Call by Valueহ্যাঁহ্যাঁনাfunc(x)
Call by Addressহ্যাঁহ্যাঁহ্যাঁfunc(&x)
Call by Referenceনাহ্যাঁহ্যাঁfunc(x) (প্যারামিটারে &)
  1. C/C++-তে putwchar() ফাংশন

  2. C/C++-তে memcpy() ফাংশন

  3. AA ট্রি: C/C++-তে ব্যালেন্সড ট্রি ডেটা স্ট্রাকচার

  4. C/C++-এ strcpy() ফাংশন