স্ট্রাকচারের ঠিকানা আর্গুমেন্ট হিসেবে পাস করা (Call by Reference)
স্ট্রাকচার ভেরিয়েবলের ঠিকানা (&struct_var) ফাংশনে পাস করলে ফাংশনটি মূল স্ট্রাকচারটি সরাসরি এক্সেস ও মডিফাই করতে পারে।
সুবিধা
- মেমরি বাঁচায় — কপি তৈরি হয় না।
- রিটার্ন মান দরকার নেই — ফাংশন আসল ডেটা পরিবর্তন করতে পারে।
- বড় স্ট্রাকচারের জন্য দক্ষ।
সিনট্যাক্স
// কলিং
display(&my_struct);
// ফাংশন ডেফিনিশন
void display(struct tagname *ptr) {
// ptr->member ব্যবহার করুন
}
উদাহরণ প্রোগ্রাম
#include <stdio.h>
struct date {
int day;
int mon;
int yr;
};
void display(struct date *dt);
int main() {
struct date d = {02, 01, 2010};
display(&d); // ঠিকানা পাস
return 0;
}
void display(struct date *dt) {
printf("Day = %d\n", dt->day);
printf("Month = %d\n", dt->mon);
printf("Year = %d\n", dt->yr);
}
আউটপুট
Day = 2 Month = 1 Year = 2010
নোট
- ফাংশন প্রোটোটাইপে পয়েন্টার টাইপ ঘোষণা করতে হয়।
- ফাংশন বডিতে
->অপারেটর দিয়ে মেম্বার এক্সেস করুন। - এই পদ্ধতিটি Call by Reference এর উদাহরণ।