কাঠামোর মান এক ফাংশন থেকে অন্য ফাংশনে স্থানান্তর করা যেতে পারে এমন তিনটি উপায় রয়েছে। তারা নিম্নরূপ -
-
কাজ করার আর্গুমেন্ট হিসাবে পৃথক সদস্যদের পাস করা।
-
কাজ করার জন্য একটি আর্গুমেন্ট হিসাবে সমগ্র কাঠামো পাস করা।
-
ফাংশনের আর্গুমেন্ট হিসাবে কাঠামোর ঠিকানা পাস করা।
এখন দেখা যাক কিভাবে একটি সম্পূর্ণ স্ট্রাকচারকে কাজ করার আর্গুমেন্ট হিসেবে পাস করা যায়।
-
স্ট্রাকচার ভেরিয়েবলের নাম ফাংশন কলে আর্গুমেন্ট হিসাবে দেওয়া হয়।
-
এটি ফাংশন শিরোলেখের অন্য কাঠামো পরিবর্তনশীলে সংগ্রহ করা হয়।
-
অসুবিধা হল একটি সম্পূর্ণ কাঠামোর একটি অনুলিপি মেমরি নষ্ট করে আবার তৈরি করা হয়।
উদাহরণ
নিম্নলিখিত প্রোগ্রামটি দেখায় কিভাবে একটি সম্পূর্ণ কাঠামোকে কার্য করার জন্য একটি আর্গুমেন্ট হিসাবে পাস করতে হয়।
#include<stdio.h> struct date{ int day; char month[10]; int year; }; int main(){ struct date d; printf("enter the day,month and year:"); scanf("%d%s%d",&d.day,d.month,&d.year); display(d);//passing entire structure as an argument to function 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); }
আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
enter the day, month and year:18 JAN 2021 day=18 month=JAN year=2021
উদাহরণ 2
আরেকটি উদাহরণ বিবেচনা করুন, যেখানে, একটি সি প্রোগ্রামকে কার্যের যুক্তি হিসাবে একটি সম্পূর্ণ কাঠামোর পাসিং প্রদর্শনের জন্য ব্যাখ্যা করা হয়েছে৷
#include<stdio.h> //Declaring structure// struct add{ int var1; int var2; }a; //Declaring and returning Function// void show(struct add a){ //Declaring sum variable// int sum; //Arithmetic Operation// sum=a.var1+a.var2; //Printing O/p// printf("Added value is %d",sum); } void main(){ //Declaring structure// struct add a; //Reading User I/p// printf("Enter variable 1 = "); scanf("%d",&a.var1); printf("Enter variable 2 = "); scanf("%d",&a.var2); //Calling function// show(a); }
আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
Enter variable 1 = 20 Enter variable 2 = 50 Added value is 70
উদাহরণ 3
ফাংশনের আর্গুমেন্ট হিসাবে একটি সম্পূর্ণ কাঠামোর পাসিং প্রদর্শনের জন্য আরেকটি সি প্রোগ্রাম এখানে দেওয়া হয়েছে যা ডিক্লেয়ারিং স্ট্রাকচার, ডিক্লেয়ারিং এবং রিটার্নিং ফাংশন ইত্যাদি ব্যাখ্যা করে৷
#include<stdio.h> //Declaring structure// struct student{ int s1,s2,s3; }s[5]; //Declaring and returning Function// void addition(struct student s[]){ //Declaring sum variable and For loop variable// int i,sum; //Arithmetic Operation// 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(){ //Declaring variable for For loop// int i; //Reading User I/p through For loop// 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); } //Calling function// 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