মূল্য দ্বারা কল এবং রেফারেন্স দ্বারা কল মধ্যে পার্থক্য কি? আপনি একটি উদাহরণ দিয়ে ব্যাখ্যা করতে পারেন?


উত্তর 1:

মান দ্বারা A2A.Call এর জন্য ধন্যবাদ মানে আর্গুমেন্ট ভেরিয়েবলের অনুলিপি তৈরি করে কোনও ফাংশন কল করা। এর অর্থ ফাংশনটি মূল মানটি শেষ হয়ে যাওয়ার পরেও অবিচ্ছিন্ন থাকে reference রেফারেন্সের মাধ্যমে কল করার অর্থ কোনও ফাংশনটিকে ভেরিয়েবলের রেফারেন্স (ঠিকানা) দিয়ে কল করা। এর অর্থ হল আসল অনুলিপিতে যে পরিবর্তনশীলটি এটি করা হয় তার সাথে কি কখনও কাজ করে।

পার্থক্যটি চিত্রিত করার জন্য সি কোডটি নীচে দেওয়া হল।

# অন্তর্ভুক্ত অকার্যকর কল_ব_ভ্যালু (int a, int b) {int temp = a; a = খ; খ = অস্থায়ী; প্রিন্টফ ("মান দ্বারা কল a =% d এবং b =% d", ক, খ); } অকার্যকর কল_বাই_রেফারেন্স (ইনট * এ, ইনট * বি) {ইন টেম্পে = * এ; * a = * খ; * খ = অস্থায়ী; প্রিন্টফ ("রেফারেন্স দ্বারা a =% d এবং b =% d", * এ, * খ); main int main () a int a = 10, b = 5; প্রিন্টফ ("মান দ্বারা কল করার আগে a%%, b =% d", ক, খ); call_by_value (ক, খ); প্রিন্টফ ("মান অনুসারে কল করার পরে এবং রেফারেন্স দ্বারা কল করার আগে, a =% d, b =% d", a, b); call_by_reference (এন্ড এ, & B); প্রিন্টফ ("রেফারেন্সের পরে a =% d, b =% d", ক, খ) এর পরে; প্রত্যাবর্তন 0; }

ফাংশনের ফলাফল: -

a = 10, খ = 5 এর মাধ্যমে কল করার আগে

কল করে কল করুন a = 5, খ = 10

মান অনুসারে কল করার পরে এবং রেফারেন্সের মাধ্যমে কল করার আগে, a = 10, খ = 5

রেফারেন্সের মাধ্যমে কলটিতে a = 5, খ = 10

রেফারেন্স দ্বারা কল করার পরে a = 5, b = 10

রেফারেন্স অনুসারে কল করার পরে মূল পরিবর্তনশীল আসলে অদলবদল হয় তবে মান দ্বারা কল করার পরে নয়।


উত্তর 2:

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

এই প্রশ্নের সমস্ত উত্তর পুনরাবৃত্তি করে যে কল অনুসারে কলটি জড়িত ভেরিয়েবলের মানগুলি পাস করে এবং রেফারেন্সের মাধ্যমে কল একই ভেরিয়েবল বা পয়েন্টারগুলিকে ভেরিয়েবলগুলিতে পাস করে।

একটি উত্তর বাস্তব জীবনের উদাহরণ দ্বারা এটি ব্যাখ্যা করে এবং আমি এটি পছন্দ করি। আমি এই পদ্ধতিগুলির প্রয়োজন কোণ দিতে চাই।

একটি দৃশ্য কল্পনা করুন। আপনার কাছে সংখ্যাগত মানগুলির একটি সহজ তালিকা রয়েছে। ডেটা কয়েকটি কলাম এবং কয়েকশো সারি জুড়ে ছড়িয়ে রয়েছে ow এখন, আপনাকে একটি কলামের জন্য মোট গণনা করতে হবে। এই কলামটি এক মাত্রার অ্যারেতে সংরক্ষিত। যোগফল গণনা করতে আপনার একটি ফাংশন রয়েছে। এখানে ফাংশনটির জন্য অ্যারেটি পড়তে হবে এবং আপনাকে মোটটি ফেরত দিতে হবে।

এই ক্ষেত্রে প্রকৃত মানগুলি সংশোধন করার দরকার নেই। ফলাফলটি সহজ এবং একক পরিবর্তনশীল। এখানে সংখ্যার মানগুলির তালিকা হিসাবে পাস করা যায় এবং ফাংশনটি সহজেই পরিচালনা করা যায় এমন যোগফল (অন্য মান) প্রদান করবে। দ্বিতীয় দৃশ্যে, একটি জটিল কাঠামো বিবেচনা করুন যা মানগুলির সেট নিয়ে গঠিত যা ইঞ্জিনের কার্যকারিতা সংজ্ঞায়িত করে। নোট করুন যে এখানে একাধিক সংজ্ঞায়িত মান রয়েছে এবং পারফরম্যান্সের পরামিতিগুলি একাধিক।

আপনি বিভিন্ন ইঞ্জিনের ধরণের জন্য ডেটা হারিয়ে ফেলেছেন এবং আপনার এমন ফাংশন রয়েছে যা ইঞ্জিনের পারফরম্যান্স পরামিতি গণনা করে।

এই পরিস্থিতিতে ইনপুটটি স্ট্রাকচার ডেটার অ্যারে যা সাধারণ ডেটা টাইপ নয়। আউটপুটও সহজ নয় এবং এটি একক মানও নয়।

যদি এই ক্ষেত্রে আমরা মান অনুসারে কাঠামোর পুরো অ্যারেটি পাস করি এবং তারপরে একই সাথে আমাদের মূল অনুলিপিতে একই সংশোধন করানো জটিল হবে এবং অপ্রয়োজনীয় হবে।

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

সুতরাং যখন ডেটা আপডেট করার প্রয়োজন হয় না এবং প্রকৃতিতে সহজ হয় তখন মান দ্বারা পাস ব্যবহার করা যেতে পারে।

জটিল ডেটা জড়িত থাকার সময় রেফারেন্স দ্বারা পাস ব্যবহার করা যেতে পারে, এটি আপডেট করা দরকার এবং ফলাফলগুলি সহজ নয়।


উত্তর 3:

মূল্য দ্বারা কল করার অর্থ হ'ল ভেরিয়েবলের একটি অনুলিপি ফাংশনে প্রেরণ করা হয়।

ফাংশনটি ইনপুট ভেরিয়েবলের কাছে লিখলে মূল ভেরিয়েবলটি সংশোধন করে না।

রেফারেন্স দ্বারা পাস করার অর্থ মূলত ভেরিয়েবলটি নিজেই পাস হয়ে যায় (যদিও নামটি পরিবর্তন হতে পারে)।

আমি এখন পিএইচপি বিকাশকারী হিসাবে আমি আপনাকে পিএইচপি-তে সহজ উদাহরণ দেব

'; প্রতিধ্বনি $ প্রথম নাম। LASTNAME $; // প্রিন্স জন দো প্রতিধ্বনিত ' '; প্রতিধ্বনি getFullNameByReferences ($ প্রথম নাম, $ শেষ নাম); // আমার গুড নেম ইকো ছাপায় ' '; প্রতিধ্বনি $ প্রথম নাম। LASTNAME $; // আমার গুড নেম প্রিন্ট করে

আপনি দ্বিতীয় ফাংশনে মানগুলি পাস করতে পারবেন না, আপনি কেবল দ্বিতীয় ফাংশনে ভেরিয়েবল প্রেরণ করতে পারেন,

রেফারেন্সের সাথে পাসের ক্ষেত্রে মানগুলি যখন ফাংশনের ভিতরে নতুন ভ্যালু সহ নির্ধারিত হয় তবে পূর্বের ফাংশনটিতে রেফারেন্স ভেরিয়েবলগুলি একই থাকে

দ্রষ্টব্য: নোট উভয় ফাংশনে ভেরিয়েবলের নাম পৃথক, তবে প্রথম দুটি ভেরিয়েবল নতুন মান দ্বারা প্রভাবিত হয়েছে


উত্তর 4:

মূল্য দ্বারা কল করার অর্থ হ'ল ভেরিয়েবলের একটি অনুলিপি ফাংশনে প্রেরণ করা হয়।

ফাংশনটি ইনপুট ভেরিয়েবলের কাছে লিখলে মূল ভেরিয়েবলটি সংশোধন করে না।

রেফারেন্স দ্বারা পাস করার অর্থ মূলত ভেরিয়েবলটি নিজেই পাস হয়ে যায় (যদিও নামটি পরিবর্তন হতে পারে)।

আমি এখন পিএইচপি বিকাশকারী হিসাবে আমি আপনাকে পিএইচপি-তে সহজ উদাহরণ দেব

'; প্রতিধ্বনি $ প্রথম নাম। LASTNAME $; // প্রিন্স জন দো প্রতিধ্বনিত ' '; প্রতিধ্বনি getFullNameByReferences ($ প্রথম নাম, $ শেষ নাম); // আমার গুড নেম ইকো ছাপায় ' '; প্রতিধ্বনি $ প্রথম নাম। LASTNAME $; // আমার গুড নেম প্রিন্ট করে

আপনি দ্বিতীয় ফাংশনে মানগুলি পাস করতে পারবেন না, আপনি কেবল দ্বিতীয় ফাংশনে ভেরিয়েবল প্রেরণ করতে পারেন,

রেফারেন্সের সাথে পাসের ক্ষেত্রে মানগুলি যখন ফাংশনের ভিতরে নতুন ভ্যালু সহ নির্ধারিত হয় তবে পূর্বের ফাংশনটিতে রেফারেন্স ভেরিয়েবলগুলি একই থাকে

দ্রষ্টব্য: নোট উভয় ফাংশনে ভেরিয়েবলের নাম পৃথক, তবে প্রথম দুটি ভেরিয়েবল নতুন মান দ্বারা প্রভাবিত হয়েছে