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

C ভাষায় পাস বাই রেফারেন্স কী?


C প্রোগ্রামিং ভাষায় পাস বাই রেফারেন্স বলতে আর্গুমেন্ট হিসেবে অ্যাড্রেস পাস করাকে বোঝায়।

অ্যালগরিদম

C ভাষায় পাস বাই ভ্যালুর কাজকর্ম ব্যাখ্যা করার জন্য একটি অ্যালগরিদম নিচে দেওয়া হলো।

START Step 1: কল করার ফাংশনটি পয়েন্টার ভেরিয়েবলসহ ঘোষণা করুন। Step 2: a,b ভেরিয়েবল ঘোষণা করুন। Step 3: রানটাইমে দুটি ভেরিয়েবল a,b লিখুন। Step 4: পাস বাই রেফারেন্সে কলিং ফাংশন। step 6-এ যান Step 5: ফলাফল a,b প্রিন্ট করুন। Step 6: কলড ফাংশন swap যাতে অ্যাড্রেস আর্গুমেন্ট হিসেবে থাকে। i. temp ভেরিয়েবল ঘোষণা ii. Temp = *a iii. *a = *b iv. *b = temp STOP

উদাহরণ প্রোগ্রাম

নিচে পাস বাই রেফারেন্স ব্যবহার করে দুটি সংখ্যা সোয়াপ করার C প্রোগ্রাম দেওয়া হলো −

#include  void main(){ void swap(int *, int *); int a, b; printf("2টি সংখ্যা লিখুন"); scanf("%d%d", &a, &b); printf("সোয়াপের আগে a=%d b=%d", a, b); swap(&a, &b); printf("সোয়াপের পরে a=%d, b=%d", a, b); } void swap(int *a, int *b){ int t; t = *a; *a = *b; // *a = (*a + *b) - (*b = *a); *b = t; }

আউটপুট

উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যায় −

2টি সংখ্যা লিখুন 10 20 সোয়াপের আগে a=10 b=20 সোয়াপের পরে a=20 b=10

পাস বাই রেফারেন্স সম্পর্কে আরো জানার জন্য আরেকটি উদাহরণ নিই।

উদাহরণ

কল বাই রেফারেন্স বা পাস বাই রেফারেন্স ব্যবহার করে প্রতিটি কলের জন্য মান ৫ বাড়াতে C প্রোগ্রাম নিচে দেওয়া হলো।

#include  void inc(int *num){ // ইনক্রিমেন্ট করা হয় // সেই অ্যাড্রেসে যেখানে num-এর মান স্টোর করা আছে *num = *num + 5; // return(*num); } int main(){ int a = 20, b = 30, c = 40; // a,b,c ভেরিয়েবলগুলোর অ্যাড্রেস পাস করা inc(&a); inc(&b); inc(&c); printf("Value of a is: %d\n", a); printf("Value of b is: %d\n", b); printf("Value of c is: %d\n", c); return 0; }

আউটপুট

উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যায় −

Value of a is: 25 Value of b is: 35 Value of c is: 45

  1. জাভাস্ক্রিপ্টে পাস বাই ভ্যালু এবং পাস বাই রেফারেন্স ব্যাখ্যা

  2. সি ভাষায় কনস্ট্যান্ট (Constant) কী এবং উদাহরণ

  3. সি ভাষায় শিফট অপারেশন (লেফট, রাইট শিফট এবং কমপ্লিমেন্ট)

  4. পাইথনে পাস বাই রেফারেন্স বনাম ভ্যালু (Pass by Reference vs Value)