পয়েন্টারঃ রেফারেন্স কর্তৃক ফাংশন কল করা - C Call by Reference: Using pointers
এই অধ্যায়ে আপনি পয়েন্টারকে ফাংশনের আর্গুমেন্ট(argument) হিসাবে অতিক্রম(pass) করানো শিখবেন। এছাড়া আপনার প্রোগ্রামে সঠিকভবে পয়েন্টার ব্যবহার করা শিখবেন।
পয়েন্টারঃ রেফারেন্স কর্তৃক ফাংশন কল করা
ফাংশন এর মধ্যে দিয়ে pointer কে যখন আর্গুমেন্ট হিসাবে অতিক্রম করানো হয় তখন ভ্যালুর পরিবর্তে মেমোরি লোকেশনের এড্রেস অতিক্রম হয়।
কারণ সি প্রোগ্রামিং এ পয়েন্টার ভ্যালু জমা রাখার পরিবর্তে মেমোরির লোকেশনকে ভ্যালু হিসাবে জমা(store) রাখে।
উদাহরনঃ পয়েন্টার এবং ফাংশনের ব্যবহার
রেফারেন্স(reference) দ্বারা ফাংশন কল করে দুটি সংখ্যাকে বিনিময়(swap) করার জন্য সি প্রোগ্রাম
/* পয়েন্টার এবং ফাংশন ব্যবহার করে দুটি সংখ্যা বিনিময়(swap) এর জন্য সি প্রোগ্রাম*/
#include <stdio.h>
void swap(int *n1, int *n2);
int main()
{
int num1 = 5, num2 = 10;
// num1 এবং num2 এর এড্রেসকে swap() ফাংশনের মধ্যে দিয়ে অতিক্রম করানো হয়।
swap( &num1, &num2);
printf("Number1 = %d\n", num1);
printf("Number2 = %d", num2);
return 0;
}
void swap(int * n1, int * n2)
{
// পয়েন্টার n1 এবং n2 যথাক্রমে num1 এবং num2 এর এড্রেসকে নির্দেশ(point) করে।
int temp;
temp = *n1;
*n1 = *n2;
*n2 = temp;
}
আউটপুট
Number1 = 10 Number2 = 5
উপরের উদাহরণের ব্যাখ্যাঃ
- num1 এবং num2 ভ্যারিয়েবলের মেমোরি লোকেশনের এড্রেসকে swap() ফাংশনের মধ্যে দিয়ে অতিক্রম করানো হয়। পয়েন্টার *n1 এবং *n2 ঐ এড্রেস-সমূহকে ভ্যালু হিসাবে গ্রহণ করে।
- সুতরাং এখন পয়েন্টার n1 এবং n2 যথাক্রমে num1 এবং num2 এর এড্রেসকে নির্দেশ(point) করে।
- পয়েন্টারের ভ্যালু যখন পরিবর্তন হয় তখন মেমোরি লোকেশনে নির্দেশিত(pointed) ভ্যালুও যথাক্রমে পরিবর্তন হয়।
- সুতরাং পয়েন্টার
*n1
এবং*n2
তে পরিবর্তন ঘটলেmain()
ফাংশনের num1 এবং num2 তেও পরিবর্তন ঘটে।
এই কৌশলকে সি প্রোগ্রামিং এ রেফারেন্স কর্তৃক(Call by Reference) কল করা বলা হয়।