কম্পিউটার

মূল্য দ্বারা কল এবং রেফারেন্স দ্বারা কল মধ্যে পার্থক্য


একটি ফাংশনে প্যারামিটার পাস করার ভিত্তিতে প্রোগ্রামিং-এ আমরা ফাংশন ইনভোকেশনকে দুটি ভাগে শ্রেণীবদ্ধ করেছি:মূল্য দ্বারা কল করুন এবং রেফারেন্স দ্বারা কল করুন। নাম অনুসারে উভয় আহ্বানেই আমরা প্যারামিটারের প্রকার অনুসারে ফাংশনকে কল করছি আমরা একটিতে প্যারামিটারের প্রকৃত মান পাস করছি এবং অন্যটিতে আমরা প্যারামিটারের অবস্থান/রেফারেন্স পাস করছি।

নিম্নে মূল্য দ্বারা কল এবং রেফারেন্স দ্বারা কলের মধ্যে গুরুত্বপূর্ণ পার্থক্য রয়েছে৷

Sr. না। কী মূল্য অনুসারে কল করুন রেফারেন্স দ্বারা কল করুন
1 নামকরণ কনভেনশন যেমন এই ধরনের প্যারামিটারের মান ফাংশন আহ্বানের জন্য পাস করা হয় তাই এটিকে কল বাই ভ্যালু বলা হয়। অন্যদিকে এই প্রকারে প্যারামিটারের রেফারেন্স ফাংশনটি চালু করার জন্য পাস করা হয় তাই এটিকে কল বাই রেফারেন্স হিসাবে নামকরণ করা হয়।
2 অভ্যন্তরীণ বাস্তবায়ন ফাংশনের কল করার সময় আমরা যে প্যারামিটারের মানটি পাস করেছি তা মূল্য অনুসারে কলে ফাংশনের প্রকৃত স্থানীয় আর্গুমেন্টে অনুলিপি করা হয়। রেফারেন্স দ্বারা কলে পাস করা প্যারামিটারের অবস্থান ঠিকানা/রেফারেন্সটি অনুলিপি করা হয় এবং ফাংশনের স্থানীয় আর্গুমেন্টে বরাদ্দ করা হয় যাতে পাস করা প্যারামিটার এবং প্রকৃত আর্গুমেন্ট উভয়ই একই অবস্থানকে বোঝায়।
3 পরিবর্তনের প্রভাব যেহেতু পাস করা প্যারামিটারের মান ফাংশনের আর্গুমেন্টে কপি করা হয় তাই ফাংশনের ভিতরে আর্গুমেন্টে করা কোনো পরিবর্তন পাস করা প্যারামিটারে প্রতিফলিত হয় না। যেহেতু আর্গুমেন্ট এবং পাস করা প্যারামিটার উভয়ই একই অবস্থানকে নির্দেশ করে তাই ফাংশনের ভিতরে আর্গুমেন্টে করা যেকোনো পরিবর্তন পাস করা প্যারামিটারে প্রতিফলিত হয়।
4 রেফার করা মেমরি অবস্থান মেমরি অবস্থান উভয় পাস করা প্যারামিটার এবং ফাংশনের প্রকৃত আর্গুমেন্ট আলাদা। পাশ করা প্যারামিটার এবং ফাংশনের প্রকৃত আর্গুমেন্ট উভয় দ্বারা উল্লেখ করা মেমরি অবস্থান একই।
5 সমর্থিত ভাষা। মূল্য অনুসারে কল করা ভাষা দ্বারা সমর্থিত হয় যেমন:C++.PHP। ভিজ্যুয়াল বেসিক নেট, এবং C#। রেফারেন্স দ্বারা কল প্রাথমিকভাবে JAVA দ্বারা সমর্থিত।

মূল্য দ্বারা কলের উদাহরণ বনাম রেফারেন্স দ্বারা কল

ByValue.c

#include <stdio.h>
class ByValue{
   void swapByValue(int, int); /* Prototype */
   int main(){
      int n1 = 10, n2 = 20;
      swapByValue(n1, n2);
      printf("n1: %d, n2: %d\n", n1, n2);
   }
   void swapByValue(int a, int b){
      int t;
      t = a; a = b; b = t;
   }
}

আউটপুট

n1: 10, n2: 20

উদাহরণ

ByReference.c

#include <stdio.h>
class ByReference{
   void swapByReference(int*, int*);
   int main(){
      int n1 = 10, n2 = 20;
      swapByReference(&n1, &n2);
      printf("n1: %d, n2: %d\n", n1, n2);
   }
   void swapByReference(int *a, int *b){
      int t;
      t = *a; *a = *b; *b = t;
   }
}

আউটপুট

n1: 20, n2: 10

  1. একটি পদ্ধতি এবং একটি ফাংশন মধ্যে পার্থক্য কি?

  2. MEAN.js এবং MEAN.io এর মধ্যে পার্থক্য?

  3. জাভাস্ক্রিপ্টে বর্গক্ষেত্রের যোগফল এবং যোগফলের বর্গক্ষেত্রের মধ্যে পার্থক্য

  4. সেলপ্যাডিং এবং সেলস্পেসিংয়ের মধ্যে পার্থক্য