C ++ ঠিকানা দ্বারা কল করুন এবং রেফারেন্স দ্বারা কল করুন

C Call Address



C ++ একটি নমনীয় সাধারণ-উদ্দেশ্য প্রোগ্রামিং ভাষা। এটি মূলত দ্বারা তৈরি করা হয়েছিল Bjarne Stroustrup, একজন ডেনমার্ক কম্পিউটার বিজ্ঞানী, 1985 সালে ফিরে এসেছিলেন। C ++ তিন-প্যারামিটার পাসিং পদ্ধতি সমর্থন করে, যেমন, মান দ্বারা কল, ঠিকানা দ্বারা কল, এবং রেফারেন্স দ্বারা কল। এই নিবন্ধে, আমরা ঠিকানা দ্বারা কল এবং রেফারেন্স প্রক্রিয়া দ্বারা কল সম্পর্কে আলোচনা করতে যাচ্ছি।

একটি ফাংশন কি?

আসল বিষয়ে ঝাঁপ দেওয়ার আগে, আমাদের বুঝতে হবে ফাংশনটি C ++ এ কী। আপনারা অনেকেই ইতিমধ্যে ফাংশনগুলির সাথে পরিচিত হতে পারেন।







একটি ফাংশন মূলত কোডের একটি অংশ যা একটি নির্দিষ্ট কাজ সম্পাদনের জন্য ব্যবহার করা যেতে পারে। একটি ফাংশন প্রধানত C ++ প্রোগ্রামে পুনরাবৃত্তিমূলক কোড কমাতে ব্যবহৃত হয়। এটি প্যারামিটার হিসেবে ইনপুট নেয় এবং রিটার্ন ভ্যালু হিসেবে আউটপুট রিটার্ন করে। যদি আমরা একবার ফাংশন সংজ্ঞায়িত করি, আমরা আমাদের প্রোগ্রামের পরবর্তী অংশে একাধিকবার কল/ব্যবহার করতে পারি। এই ভাবে, আমরা প্রোগ্রামে অনেক পুনরাবৃত্তিমূলক কোড সংরক্ষণ করি।



প্রতিটি C ++ প্রোগ্রামের প্রধান () ফাংশন থাকবে। প্রধান () ফাংশন হল একটি C ++ প্রোগ্রামের এন্ট্রি পয়েন্ট। প্রধান () ফাংশন ছাড়া, প্রোগ্রামার যতটা ফাংশন চায় তা সংজ্ঞায়িত করতে পারে।



এখানে একটি ফাংশন সংজ্ঞায়িত সিনট্যাক্স:





রিটার্ন_ টাইপ ফাংশন_নাম(ইনপুট পরামিতি তালিকা)

C ++ এ ফাংশন 0 বা তার বেশি সংখ্যক ইনপুট প্যারামিটার গ্রহণ করতে পারে, যেখানে এটি শুধুমাত্র একটি রিটার্ন-ভ্যালু ফেরত দিতে পারে।

ঠিকানা কি?

C ++ (C ভাষার অনুরূপ) এ দুই ধরনের ভেরিয়েবল আছে - ডেটা ভেরিয়েবল এবং অ্যাড্রেস ভেরিয়েবল। অ্যাড্রেস ভেরিয়েবল অন্য ডেটা ভেরিয়েবলের ঠিকানা সংরক্ষণ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিম্নলিখিত কোড স্নিপেট বিবেচনা করা যাক:



intআমি= 100;
int *পিটিআর= &আমি;

এখানে, প্রথম স্টেটমেন্ট আমাদের বলে যে ভেরিয়েবল i হল একটি ডাটা ভেরিয়েবল, এবং এটি 100 এর মান সংরক্ষণ করছে।

রেফারেন্স কি?

রেফারেন্স হল C ++ ভাষার আরেকটি শক্তিশালী বৈশিষ্ট্য। আসুন নিম্নলিখিত কোড স্নিপেট বিবেচনা করি:

intপ্রতি= 200;
int &আর=প্রতি;

এই উদাহরণে, আমরা একটি পূর্ণসংখ্যা ঘোষণা করেছি, যেমন a এবং তারপর একটি রেফারেন্স ভেরিয়েবল r ঘোষণা করেছি, যা a এর মান দিয়ে শুরু করা হয়েছে। সুতরাং, রেফারেন্স ভেরিয়েবল অন্য ভেরিয়েবলের একটি উপনাম ছাড়া আর কিছুই নয়।

প্যারামিটার পাস করার পদ্ধতি:

C ++ ভাষায় তিন ধরনের প্যারামিটার পাসিং পদ্ধতি রয়েছে:

  1. মূল্য দ্বারা কল / মান দ্বারা পাস
  2. ঠিকানা দ্বারা কল / ঠিকানা দ্বারা পাস
  3. রেফারেন্স দ্বারা কল / রেফারেন্স দ্বারা পাস

এই নিবন্ধে, আমরা আলোচনা করছি - ঠিকানা দ্বারা কল এবং রেফারেন্স দ্বারা কল করুন।

ঠিকানা দ্বারা কল / ঠিকানা দ্বারা পাস কি?

ঠিকানা দ্বারা কল / পাস পদ্ধতি দ্বারা কল করার ক্ষেত্রে, ফাংশন আর্গুমেন্ট ঠিকানা হিসাবে পাস করা হয়। কলার ফাংশন পরামিতিগুলির ঠিকানা পাস করে। ফাংশন সংজ্ঞায় পয়েন্টার ভেরিয়েবল ব্যবহার করা হয়। ঠিকানা দ্বারা কল পদ্ধতির সাহায্যে, ফাংশন প্রকৃত পরামিতিগুলি অ্যাক্সেস করতে পারে এবং তাদের পরিবর্তন করতে পারে। আমরা এই নিবন্ধের পরবর্তী অংশে কল পদ্ধতি দ্বারা কল করার একটি উদাহরণ দেখতে পাব।

রেফারেন্স দ্বারা কল / রেফারেন্স দ্বারা কি?

রেফারেন্স পদ্ধতি দ্বারা কল / রেফারেন্স পদ্ধতি দ্বারা, ফাংশন পরামিতি একটি রেফারেন্স হিসাবে পাস করা হয়। ফাংশন সংজ্ঞা ভিতরে, প্রকৃত পরামিতি রেফারেন্স পরিবর্তনশীল ব্যবহার করে অ্যাক্সেস করা হয়।

উদাহরণ:

এখন, যেহেতু আমরা প্যারামিটার পাসিং পদ্ধতির ধারণাটি বুঝতে পেরেছি, আমরা C ++ এ প্যারামিটার পাসিং মেকানিজম বোঝার জন্য বেশ কয়েকটি উদাহরণ প্রোগ্রাম দেখতে পাব:

  1. উদাহরণ -1-ঠিকানা দ্বারা কল (1)
  2. উদাহরণ -২-ঠিকানা দ্বারা কল (2)
  3. উদাহরণ -3-রেফারেন্স দ্বারা কল (1)
  4. উদাহরণ -4-রেফারেন্স দ্বারা কল (2)

C ++ এ কিভাবে ঠিকানা দ্বারা কল পদ্ধতি কাজ করে তা ব্যাখ্যা করার জন্য প্রথম দুটি উদাহরণ দেওয়া হয়েছে। শেষ দুটি উদাহরণ হল রেফারেন্স ধারণা দ্বারা কল ব্যাখ্যা করা।

উদাহরণ -1-ঠিকানা দ্বারা কল (1)

এই উদাহরণে, আমরা ঠিকানা প্রক্রিয়া দ্বারা কল প্রদর্শন করতে যাচ্ছি। প্রধান () ফাংশন থেকে, আমরা হ্যালো () ফাংশন কল করছি এবং var এর ঠিকানা পাস করছি। ফাংশন সংজ্ঞায়, আমরা একটি পয়েন্টার ভেরিয়েবলে var এর ঠিকানা পাচ্ছি, যেমন, p। ফাংশনের ভিতরে হ্যালো, পয়েন্টার এর সাহায্যে var এর মান 200 তে পরিবর্তন করা হচ্ছে। অতএব, হ্যালো () ফাংশন কলের পরে মূল () ফাংশনের ভিতরে var এর মান 200 তে পরিবর্তিত হচ্ছে।

#অন্তর্ভুক্ত
ব্যবহার নামস্থানঘন্টার;

অকার্যকরহ্যালো(int *পৃ)
{
খরচ <<endl<< 'হ্যালো () ফাংশনের ভিতরে:' <<endl;
খরচ << ' *P =' এর মান << *পৃ<<endl;
*পৃ= 200;
খরচ << ' *P =' এর মান << *পৃ<<endl;
খরচ << 'হ্যালো () ফাংশন থেকে বেরিয়ে আসা।' <<endl;
}

intপ্রধান()
{
intকোথায়= 100;
খরচ << 'Main () ফাংশনের ভিতরে var এর মান =' <<কোথায়<<endl;

হ্যালো(&কোথায়);

খরচ <<endl<< 'Main () ফাংশনের ভিতরে var এর মান =' <<কোথায়<<endl;

প্রত্যাবর্তন 0;
}

উদাহরণ -২-ঠিকানা দ্বারা কল (2)

এটি ঠিকানা পদ্ধতি দ্বারা কল করার আরেকটি উদাহরণ। এই উদাহরণে, আমরা ব্যাখ্যা করতে যাচ্ছি কিভাবে ঠিকানা দ্বারা কল পদ্ধতি একটি বাস্তব জীবনের সমস্যা সমাধানের জন্য ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, আমরা দুটি ভেরিয়েবল পরিবর্তন করতে একটি ফাংশন লিখতে চাই। যদি আমরা দুটি ভেরিয়েবলকে সোয়াপ করার জন্য কল পদ্ধতি দ্বারা কল ব্যবহার করি, প্রকৃত ভেরিয়েবলগুলি কলার ফাংশনে অদলবদল করে না। এই ধরনের পরিস্থিতিতে কল অ্যাড্রেস পদ্ধতি ব্যবহার করা যেতে পারে। এই উদাহরণে, আমরা var_1 (& var_1) এবং var_2 (& var_2) উভয়ের ঠিকানা mySwap () ফাংশনে প্রেরণ করছি। MySwap () ফাংশনের ভিতরে, আমরা পয়েন্টারগুলির সাহায্যে এই দুটি ভেরিয়েবলের মান বদল করছি। আপনি নীচের আউটপুটে দেখতে পাচ্ছেন, mySwap () ফাংশনটি কার্যকর হওয়ার পরে এই ভেরিয়েবলের প্রকৃত মান প্রধান () ফাংশনে অদলবদল হচ্ছে।

#অন্তর্ভুক্ত
ব্যবহার নামস্থানঘন্টার;

অকার্যকরmySwap(int *vptr_1,int *vptr_2)
{
inttemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

intপ্রধান()
{
intvar_1= 100;
intvar_2= 300;

খরচ << 'MySwap () ফাংশন কল করার আগে, var_1 এর মান:' <<var_1<<endl;
খরচ << 'MySwap () ফাংশন কল করার আগে, var_2 এর মান:' <<var_2<<endl<<endl;

খরচ << 'MySwap () ফাংশন কলিং - ঠিকানা দ্বারা কল করুন।' <<endl<<endl;
mySwap(&var_1,&var_2);

খরচ << 'MySwap () ফাংশন কল করার পর, var_1 এর মান:' <<var_1<<endl;
খরচ << 'MySwap () ফাংশন কল করার পর, var_2 এর মান:' <<var_2<<endl;

প্রত্যাবর্তন 0;
}

উদাহরণ -3-রেফারেন্স দ্বারা কল (1)

এই উদাহরণে, আমরা প্রদর্শন করতে যাচ্ছি কিভাবে রেফারেন্স দ্বারা কল C ++ এ কাজ করে। হ্যালো () ফাংশন সংজ্ঞায়, মানটি একটি রেফারেন্স ভেরিয়েবল (& p) হিসাবে গ্রহণ করা হচ্ছে। রেফারেন্স ভেরিয়েবলের সাহায্যে (যেমন, পি), আমরা মূল () ফাংশনের ভিতরে প্রকৃত প্যারামিটার (var) এর মান পরিবর্তন করতে সক্ষম।

#অন্তর্ভুক্ত
ব্যবহার নামস্থানঘন্টার;

অকার্যকরহ্যালো(int &পৃ)
{
খরচ <<endl<< 'হ্যালো () ফাংশনের ভিতরে:' <<endl;
খরচ << 'P =' এর মান <<পৃ<<endl;
পৃ= 200;
খরচ << 'P =' এর মান <<পৃ<<endl;
খরচ << 'হ্যালো () ফাংশন থেকে বেরিয়ে আসা।' <<endl;
}

intপ্রধান()
{
intকোথায়= 100;
খরচ << 'Main () ফাংশনের ভিতরে var এর মান =' <<কোথায়<<endl;

হ্যালো(কোথায়);

খরচ <<endl<< 'Main () ফাংশনের ভিতরে var এর মান =' <<কোথায়<<endl;

প্রত্যাবর্তন 0;
}

উদাহরণ -4-রেফারেন্স দ্বারা কল (2)

এটি রেফারেন্স দ্বারা একটি কল আরেকটি উদাহরণ। এই উদাহরণে, আমরা একটি বাস্তব বিশ্বের উদাহরণের সাহায্যে C ++ এ কিভাবে রেফারেন্স দ্বারা কল কাজ করে তা প্রদর্শন করতে যাচ্ছি। MySwap () ফাংশনটি মূল () ফাংশন থেকে নিম্নলিখিত পরামিতিগুলির সাথে বলা হয় - var_1 এবং var_2। MySwap () ফাংশনের ভিতরে, আমরা রেফারেন্স ভেরিয়েবল হিসাবে প্যারামিটারগুলি গ্রহণ করছি।

#অন্তর্ভুক্ত
ব্যবহার নামস্থানঘন্টার;

অকার্যকরmySwap(int &vref_1,int &vref_2)
{
inttemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

intপ্রধান()
{
intvar_1= 100;
intvar_2= 300;

খরচ << 'MySwap () ফাংশন কল করার আগে, var_1 এর মান:' <<var_1<<endl;
খরচ << 'MySwap () ফাংশন কল করার আগে, var_2 এর মান:' <<var_2<<endl<<endl;

খরচ << 'MySwap () ফাংশন কলিং - রেফারেন্স দ্বারা কল করুন।' <<endl<<endl;
mySwap(var_1, var_2);

খরচ << 'MySwap () ফাংশন কল করার পর, var_1 এর মান:' <<var_1<<endl;
খরচ << 'MySwap () ফাংশন কল করার পর, var_2 এর মান:' <<var_2<<endl;

প্রত্যাবর্তন 0;
}

উপসংহার

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