কিভাবে C++ এ ফাংশনে আর্গুমেন্ট পাস করবেন: মান দ্বারা বনাম রেফারেন্স দ্বারা?

Kibhabe C E Phansane Argumenta Pasa Karabena Mana Dbara Banama Repharensa Dbara



C++ সহ যেকোনো প্রোগ্রামিং ভাষার ফাংশনে পরামিতি প্রদান করার ক্ষমতা থাকতে হবে। দ্বারা মান এবং দ্বারা রেফারেন্স দুটি প্রধান পদ্ধতি যা পরামিতি পাস করতে ব্যবহার করা যেতে পারে। উভয় পদ্ধতির সুবিধা এবং অসুবিধা রয়েছে, তাই প্রোগ্রামারদের জন্য কখন প্রতিটিটি ব্যবহার করতে হবে তা জানা অত্যন্ত গুরুত্বপূর্ণ।

1: মূল্য দিয়ে আর্গুমেন্ট পাস করা

ভেরিয়েবলের একটি অনুলিপি তৈরি করা হয় এবং ফাংশনে প্রদান করা হয় যখন আর্গুমেন্ট মান দ্বারা পাস করা হয় . ফাংশনের ভিতরে ভেরিয়েবলে করা সমস্ত পরিবর্তন শুধুমাত্র অনুলিপিকে প্রভাবিত করে; কিছুই মূল পরিবর্তনশীল পরিবর্তন করা হয় না. ফলে, মান দ্বারা ক্ষণস্থায়ী এটি একটি নিরাপদ পদ্ধতি কারণ অনিচ্ছাকৃতভাবে মূল ভেরিয়েবলের মান পরিবর্তন করার কোন সম্ভাবনা নেই।

মান দ্বারা ক্ষণস্থায়ী , তবে, অকার্যকর হতে পারে, বিশেষ করে যখন বড় বা জটিল ডেটা টাইপ নিয়ে কাজ করা হয়। ডেটার একটি অনুলিপি প্রয়োজন এমন প্রতিটি ফাংশন কল দ্রুত CPU এবং মেমরি সংস্থান নিঃশেষ করতে পারে। উপরন্তু, মান দ্বারা ক্ষণস্থায়ী মূল ভেরিয়েবলের মান পরিবর্তন করার লক্ষ্যে এমন ফাংশনগুলির জন্য ব্যবহার করা যাবে না কারণ অনুলিপি এবং মূল ভেরিয়েবল লিঙ্ক নয়।







2: রেফারেন্স দ্বারা আর্গুমেন্ট পাস করা

ভেরিয়েবল হতে পারে রেফারেন্স দ্বারা পাস C++ এও, যা এই সমস্যাগুলি সমাধান করতে সাহায্য করে। মূল ভেরিয়েবল যখন ফাংশনে পাঠানো হয় রেফারেন্স দ্বারা পাস , এবং ফাংশনের অভ্যন্তরে ভেরিয়েবলে সঞ্চালিত যেকোনো পরিবর্তন মূল ভেরিয়েবলকেও প্রভাবিত করবে। এই কারনে, রেফারেন্স দ্বারা পাস বড় বা জটিল ডেটা টাইপের জন্য যথেষ্ট বেশি কার্যকর এবং অনুলিপি করার প্রয়োজন এড়ায়।



অনিচ্ছাকৃত পরিবর্তন প্রতিরোধ করার জন্য, একটি ফাংশন স্পষ্টভাবে const হিসাবে মনোনীত করা আবশ্যক। 'int calculate(const int&a, const int&b)' হিসাবে ফাংশন ঘোষণায় const কীওয়ার্ড যোগ করলে এটি সম্পন্ন হবে।



যাহোক, রেফারেন্স দ্বারা আর্গুমেন্ট পাস পাশাপাশি বিস্তারিত সতর্ক মনোযোগ প্রয়োজন. অনভিজ্ঞ প্রোগ্রামাররা ভুল করতে পারে, যেমন অনিচ্ছাকৃত পার্শ্বপ্রতিক্রিয়া তৈরি করা, ডেটার অনিচ্ছাকৃত শেয়ারিং এবং বহিরাগত ডেটা ওভাররাইড করা।





নিম্নলিখিত কোডটি বিবেচনা করুন যা উভয়ই প্রদর্শন করে যুক্তি পাস করার পদ্ধতি :

# অন্তর্ভুক্ত করুন

নামস্থান std ব্যবহার করে ;

অকার্যকর পাসবাই ভ্যালু ( int এক্স ) {

এক্স = 5 ;

cout << 'পাসবাই ভ্যালুর ভিতরে:' << এক্স << endl ;

}

অকার্যকর পাসবাই রেফারেন্স ( int এবং এক্স ) {

এক্স = 5 ;

cout << 'পাসবাই রেফারেন্সের ভিতরে:' << এক্স << endl ;

}

int প্রধান ( ) {

int সংখ্যা1 = 2 , সংখ্যা2 = 2 ;

cout << 'ফাংশন কল করার আগে: num1=' << সংখ্যা1 << 'সংখ্যা2=' << সংখ্যা2 << endl ;

পাসবাই ভ্যালু ( সংখ্যা1 ) ;

পাসবাই রেফারেন্স ( সংখ্যা2 ) ;

cout << 'ফাংশন কলের পরে: num1=' << সংখ্যা1 << 'সংখ্যা2=' << সংখ্যা2 << endl ;

ফিরে 0 ;

}

উপরের কোডে, প্রথম ফাংশন, পাসবাই ভ্যালু , মান অনুসারে একটি পূর্ণসংখ্যা যুক্তি পায়। ফাংশনের মধ্যে, একটি নতুন পূর্ণসংখ্যা ভেরিয়েবল তৈরি করা হয় এবং মান 5 বরাদ্দ করা হয়। মূল পূর্ণসংখ্যা অপরিবর্তিত থাকে। দ্বিতীয় ফাংশন, পাসবাই রেফারেন্স , রেফারেন্স দ্বারা একটি পূর্ণসংখ্যা যুক্তি পায়। এই ক্ষেত্রে, ফাংশন সরাসরি মূল ভেরিয়েবলকে ম্যানিপুলেট করে।



আউটপুট

প্রত্যাশিত হিসাবে, প্রথম কল 5 আউটপুট, কিন্তু মূল পরিবর্তনশীল উপর কোন প্রভাব নেই. বিপরীতে, দ্বিতীয় কলটি num2-এর মান 5-এ পরিবর্তন করে, যা চূড়ান্ত বিবৃতির আউটপুটকে প্রভাবিত করে।

মান দ্বারা পাস বনাম রেফারেন্স দ্বারা পাস

1: একটি ফাংশন কল করার উপায়

মধ্যে একটি পার্থক্য মান দ্বারা ক্ষণস্থায়ী এবং রেফারেন্স দ্বারা পাস কিভাবে ফাংশন বলা হয়. কখন মান দ্বারা ক্ষণস্থায়ী , ফাংশন কলে অবশ্যই ভেরিয়েবলের মান অন্তর্ভুক্ত করতে হবে, যেমন `গণনা(a, b)`। কখন রেফারেন্স দ্বারা পাস , ফাংশন কলে অবশ্যই ভেরিয়েবলের মেমরি ঠিকানা অন্তর্ভুক্ত করতে হবে, একটি অ্যাম্পারস্যান্ড অক্ষর দ্বারা প্রতীকী, যেমন `গণনা(&a, &b)`।

2: ডেটা প্রকার

সাধারণভাবে, মান দ্বারা ক্ষণস্থায়ী ছোট বা সাধারণ ডেটা টাইপের সাথে কাজ করার সময় বা যখন ফাংশনটি মূল ভেরিয়েবল পরিবর্তন করার উদ্দেশ্যে নয় তখন এটি সবচেয়ে উপযুক্ত। রেফারেন্স দ্বারা পাস বড় বা জটিল ডেটা টাইপের জন্য বা যখন ফাংশনটি আসল ভেরিয়েবলের মান পরিবর্তন করার উদ্দেশ্যে হয় তখন এটি আরও উপযুক্ত।

উপসংহার

যখন পরামিতি হয় মান দ্বারা পাস একটি ফাংশনে, ভেরিয়েবলের একটি অনুলিপি তৈরি এবং সরবরাহ করা হয়। দ্বারা রেফারেন্স দ্বারা পাস , মূল ভেরিয়েবলটি ফাংশনে পাঠানো হয়। C++ এ, মান বা রেফারেন্স দ্বারা আর্গুমেন্ট পাস একটি মৌলিক ধারণা। সঠিক পদ্ধতি নির্বাচন করা নির্দিষ্ট পরিস্থিতিতে নির্ভর করে এবং সাবধানে মূল্যায়ন করা উচিত। ব্যবহার করার সুবিধা রেফারেন্স সহজ ব্যবহার করার প্রলোভন সত্ত্বেও, পদ্ধতির ফলে আরও কার্যকর কোড হতে পারে মান দ্বারা ক্ষণস্থায়ী পদ্ধতি