মডিউল ১৫-৩ঃ কল বাই রেফারেন্স

একটি ভেরিয়েবল ফাংশনে পাস করার পর যদি তাতে কোন চেঞ্জ করা হয় আর সেই চেঞ্জটি যদি আমরা মেইন ফাংশন থেকেও এক্সেস করতে চাই তাহলে ভেরিয়েবলটিকে আমরা রেফারেন্স হিসেবে পাস করতে পারি অর্থাৎ সেই ভেরিয়েবলটির এড্রেস পাস করতে পারি এবং ফাংশনে সেই এড্রেসটি পয়েন্টার দিয়ে প্যারামিটার হিসেবে রিসিভ করতে পারি।

#include<stdio.h>
void fun(int* p)    // যেহেতু এই ফাংশনে এড্রেস পাঠানো হচ্ছে আর আমরা জানি এড্রেস রিসিভ করার জন্য পয়েন্টার ব্যাবহার করতে হয় তাই এখানে প্যারামিটার হিসেবে একটি পয়েন্টার ভেরিয়েবল নেওয়া হয়েছে। 
{
    *p = 100;       // পয়েন্টার এর সাহায্যে ডিরেফারেন্সিং করে x এর মান চেঞ্জ করা হচ্ছে। 
}
int main()
{
    int x = 10;     // শুরুতে x এর ভেলু ১০ রাখা হয়েছে। 
    fun(&x);        // ফাংশনকে কল করে x এর এড্রেস পাঠানো হয়েছে। 
    printf("x er value: %d\n",x);    // x এর মান প্রিন্ট করা হচ্ছে। 
}

কোডটি রান করলে দেখতে পাব x এর মান ১০০ প্রিন্ট হচ্ছে। যদিও শুরুতে x এর মান ১০ ছিল। তারপর এই x কে আমরা রেফারেন্স হিসেবে পাস করে দিয়েছি ফাংশনের মধ্যে। সেই ফাংশনে যখন এই x এর মান চেঞ্জ করে ১০০ করে দেওয়া হলো তখন এই চেঞ্জটি মেইন ফাংশনেও হয়েছে। তাই ফাংশন কল হওয়া শেষে যখন x এর মান প্রিন্ট করা হচ্ছে তখন ১০০ প্রিন্ট হচ্ছে। এটাই হচ্ছে কল বাই রেফারেন্স।

Last updated