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 প্রোগ্রাম দেওয়া হলো −
#includevoid 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 প্রোগ্রাম নিচে দেওয়া হলো।
#includevoid 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