কাঠামোর মান এক ফাংশন থেকে অন্য ফাংশনে স্থানান্তর করা যেতে পারে এমন তিনটি উপায় রয়েছে। তারা নিম্নরূপ -
-
কাজ করার আর্গুমেন্ট হিসাবে পৃথক সদস্যদের পাস করা।
-
কাজ করার জন্য একটি আর্গুমেন্ট হিসাবে সমগ্র কাঠামো পাস করা।
-
ফাংশনের আর্গুমেন্ট হিসাবে কাঠামোর ঠিকানা পাস করা।
এখন, আসুন আমরা বুঝতে পারি কিভাবে ফাংশনের আর্গুমেন্ট হিসাবে স্ট্রাকচারের ঠিকানা পাস করা যায়।
-
কাঠামোর ঠিকানা ফাংশনের আর্গুমেন্ট হিসাবে পাস করা হয়।
-
এটি ফাংশন হেডারে গঠনের জন্য একটি পয়েন্টারে সংগ্রহ করা হয়।
সুবিধা
ফাংশনের আর্গুমেন্ট হিসাবে কাঠামোর ঠিকানা পাস করার সুবিধাগুলি নিম্নরূপ -
-
মেমরির কোন অপচয় নেই কারণ আবার কপি তৈরি করার প্রয়োজন নেই।
-
মান ফেরত দেওয়ার দরকার নেই, কারণ ফাংশনটি পরোক্ষভাবে পুরো কাঠামো অ্যাক্সেস করতে পারে এবং তারপরে এটিতে কাজ করতে পারে।
উদাহরণ
নিম্নলিখিত প্রোগ্রামটি দেখায় কিভাবে একটি কাঠামোর ঠিকানাকে ফাংশনের যুক্তি হিসাবে −
পাস করতে হয়#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); 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); }
আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
enter the day, month and year:20 MAR 2021 day=20 month=MAR year=2021
উদাহরণ
সম্পূর্ণ ফাংশনটিকে আর্গুমেন্ট হিসাবে কল করে কাঠামো এবং ফাংশন প্রদর্শনের জন্য নীচে একটি সি প্রোগ্রাম দেওয়া হল। কলিং ফাংশনের এই পদ্ধতির কারণে, মেমরির কোন অপচয় হয় না, যেহেতু আমাদের আবার কপি করে মান ফেরত দিতে হবে না।
#include<stdio.h> //Declaring structure// struct student{ char Name[100]; int Age; float Level; char Grade[50]; char temp; }s[5]; //Declaring and returning Function// void show(struct student *p){ //Declaring variable for For loop within the function// int i; //For loop for printing O/p// 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(){ //Declaring variable for for loop// int i; //Declaring structure with pointer// struct student *p; //Reading User I/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);//Clearing Buffer// printf("Enter the Grade of student %d :",i+1); gets(s[i].Grade); } //Assigning pointer to structure// p=&s; //Calling function// 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