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

C-এ ফাংশনে স্ট্রাকচারের অ্যাড্রেস আর্গুমেন্ট হিসেবে পাস করা


স্ট্রাকচারের মানগুলো এক ফাংশন থেকে অন্য ফাংশনে ট্রান্সফার করার তিনটি পদ্ধতি আছে। সেগুলো হলো −

  • ফাংশনে আর্গুমেন্ট হিসেবে ইনডিভিজুয়াল মেম্বার পাস করা।

  • ফাংশনে আর্গুমেন্ট হিসেবে সম্পূর্ণ স্ট্রাকচার পাস করা।

  • ফাংশনে আর্গুমেন্ট হিসেবে স্ট্রাকচারের অ্যাড্রেস পাস করা।

এখন, স্ট্রাকচারের অ্যাড্রেস ফাংশনে আর্গুমেন্ট হিসেবে কিভাবে পাস করতে হয় সেটি বুঝতে পারি।

  • স্ট্রাকচারের অ্যাড্রেসটি ফাংশনে আর্গুমেন্ট হিসেবে পাস করা হয়।

  • ফাংশন হেডারে স্ট্রাকচারের পয়েন্টার হিসেবে এটি সংগ্রহ করা হয়।

সুবিধা

ফাংশনে স্ট্রাকচারের অ্যাড্রেস আর্গুমেন্ট হিসেবে পাস করার সুবিধাগুলো হলো −

  • কপি তৈরি করার দরকার নাই, তাই মেমরির অপচয় হয় না।

  • ফাংশন ইনডায়রেক্টলি পুরো স্ট্রাকচার অ্যাক্সেস করে কাজ করতে পারে, তাই মান রিটার্ন করার দরকার নেই।

উদাহরণ

নিচের প্রোগ্রামটি স্ট্রাকচারের অ্যাড্রেস ফাংশনে আর্গুমেন্ট হিসেবে পাস করার 모습을 보여준다 −

#include  struct date{ int day; char month[10]; int year; }; int main(){ struct date d; printf("দিন, মাস ও বছর লিখুন: "); scanf("%d%s%d", &d.day, d.month, &d.year); display(&d); return 0; } void display(struct date *p){ printf("day=%d\n", p->day); printf("month=%s\n", p->month); printf("year=%d\n", p->year); }

আউটপুট

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

দিন, মাস ও বছর লিখুন: 20 MAR 2021 day=20 month=MAR year=2021

উদাহরণ

নিচে একটি C প্রোগ্রাম দেওয়া হলো যা স্ট্রাকচার ও ফাংশনকে ডেমনস্ট্রেট করে সম্পূর্ণ ফাংশনকে আর্গুমেন্ট হিসেবে কল করে। এই পদ্ধতিতে মেমরির অপচয় হয় না, কারণ আবার কপি তৈরি করার দরকার নেই এবং রিটার্ন মানও দরকার নেই।

#include  // স্ট্রাকচার ঘোষণা // struct student{ char Name[100]; int Age; float Level; char Grade[50]; char temp; }s[5]; // ফাংশন ঘোষণা ও রিটার্ন // void show(struct student *p){ // ফাংশন ভিতরে ফর লুপের জন্য ভেরিয়েবল ঘোষণা // int i; // আউটপুট প্রিন্ট করার জন্য ফর লুপ // for(i=1; i<3; i++){ printf("The Name of student %d is : %s\n", i, p->Name); printf("The Age of student %d is : %d\n", i, p->Age); printf("The Level of student %d is : %f\n", i, p->Level); printf("The Grade of student %d is : %s\n", i, p->Grade); p++; } } void main(){ // ফর লুপের জন্য ভেরিয়েবল ঘোষণা // int i; // পয়েন্টারের সাথে স্ট্রাকচার ঘোষণা // struct student *p; // ইউজার ইনপুট পড়া // for(i=0; i<2; i++){ printf("Enter the Name of student %d : ", i+1); gets(s[i].Name); printf("Enter the Age of student %d : ", i+1); scanf("%d", &s[i].Age); printf("Enter the Level of student %d :", i+1); scanf("%f", &s[i].Level); scanf("%c", &s[i].temp); // বাফার ক্লিয়ার করা // printf("Enter the Grade of student %d :", i+1); gets(s[i].Grade); } // স্ট্রাকচারের সাথে পয়েন্টার অ্যাসাইন করা // p = &s; // ফাংশন কল করা // show(&s); }

আউটপুট

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

Enter the Name of student 1 : Lucky Enter the Age of student 1 : 27 Enter the Level of student 1 : 2 Enter the Grade of student 1 : A Enter the Name of student 2 : Pinky Enter the Age of student 2 : 29 Enter the Level of student 2 : 1 Enter the Grade of student 2 : B The Name of student 1 is : Lucky The Age of student 1 is : 27 The Level of student 1 is : 2.000000 The Grade of student 1 is : A The Name of student 2 is : Pinky The Age of student 2 is : 29 The Level of student 2 is : 1.000000 The Grade of student 2 is : B

  1. এক্সেলে PI ফাংশন ব্যবহারের পদ্ধতি

  2. Tkinter-এ ইভেন্ট হ্যান্ডলারে আর্গুমেন্ট পাস করা

  3. টকিন্টার পাইথনে এন্টার কি ফাংশনের সাথে বাইন্ড করা

  4. আপনার উইন্ডোজ ১১ PC-এর IP অ্যাড্রেস খুঁজে বের করুন: ধাপে ধাপে গাইড