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

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 d){ printf("day=%d\n", d.day); printf("month=%s\n", d.month); printf("year=%d\n", d.year); }

আউটপুট

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

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

উদাহরণ ২

আরেকটি উদাহরণ বিবেচনা করুন, যেখানে সম্পূর্ণ স্ট্রাকচার ফাংশনে আর্গুমেন্ট হিসেবে পাস করার 모습을 ডেমনস্ট্রেট করা হয়েছে।

#include  // স্ট্রাকচার ঘোষণা // struct add{ int var1; int var2; }a; // ফাংশন ঘোষণা ও রিটার্ন // void show(struct add a){ // যোগফল ভেরিয়েবল ঘোষণা // int sum; // গাণিতিক অপারেশন // sum = a.var1 + a.var2; // আউটপুট প্রিন্ট করা // printf("Added value is %d", sum); } void main(){ // স্ট্রাকচার ঘোষণা // struct add a; // ইউজার ইনপুট পড়া // printf("Enter variable 1 = "); scanf("%d", &a.var1); printf("Enter variable 2 = "); scanf("%d", &a.var2); // ফাংশন কল // show(a); }

আউটপুট

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

Enter variable 1 = 20 Enter variable 2 = 50 Added value is 70

উদাহরণ ৩

স্ট্রাকচার ঘোষণা, ফাংশন ঘোষণা ও রিটার্ন ব্যাখ্যা করে আরেকটি C প্রোগ্রাম নিচে দেওয়া হলো।

#include  // স্ট্রাকচার ঘোষণা // struct student{ int s1, s2, s3; }s[5]; // ফাংশন ঘোষণা ও রিটার্ন // void addition(struct student s[]){ // যোগফল ভেরিয়েবল ও ফর লুপ ভেরিয়েবল ঘোষণা // int i, sum; // গাণিতিক অপারেশন // for(i=1; i<4; i++){ sum = s[i].s1 + s[i].s2 + s[i].s3; printf("Student %d scored total of %d\n", i, sum); } } void main(){ // ফর লুপের জন্য ভেরিয়েবল ঘোষণা // int i; // ফর লুপের মাধ্যমে ইউজার ইনপুট পড়া // for(i=1; i<4; i++){ printf("Enter marks for student %d in subject 1 = ", i); scanf("%d", &s[i].s1); printf("Enter marks for student %d in subject 2 = ", i); scanf("%d", &s[i].s2); printf("Enter marks for student %d in subject 3 = ", i); scanf("%d", &s[i].s3); } // ফাংশন কল // addition(s); }

আউটপুট

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

Enter marks for student 1 in subject 1 = 25 Enter marks for student 1 in subject 2 = 89 Enter marks for student 1 in subject 3 = 45 Enter marks for student 2 in subject 1 = 12 Enter marks for student 2 in subject 2 = 45 Enter marks for student 2 in subject 3 = 89 Enter marks for student 3 in subject 1 = 12 Enter marks for student 3 in subject 2 = 78 Enter marks for student 3 in subject 3 = 12 Student 1 scored total of 159 Student 2 scored total of 146 Student 3 scored total of 102

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

  2. পাইথন ফাংশনে আর্গামেন্ট ভ্যালু দিয়ে পাস করার পদ্ধতি

  3. পাইথন ফাংশনে ডিকশনারি আর্গামেন্ট হিসেবে পাস করা

  4. পাইথন ফাংশন আর্গামেন্ট হিসেবে ফাংশন পাস করা