Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी में कार्य करने के तर्क के रूप में संपूर्ण संरचना को कैसे पारित करें?

ऐसे तीन तरीके हैं जिनके द्वारा संरचना के मूल्यों को एक फ़ंक्शन से दूसरे फ़ंक्शन में स्थानांतरित किया जा सकता है। वे इस प्रकार हैं -

  • कार्य करने के लिए अलग-अलग सदस्यों को तर्क के रूप में पास करना।

  • कार्य करने के लिए एक तर्क के रूप में संपूर्ण संरचना को पारित करना।

  • संरचना के पते को कार्य करने के लिए तर्क के रूप में पास करना।

अब देखते हैं कि कार्य करने के लिए एक तर्क के रूप में एक संपूर्ण संरचना को कैसे पारित किया जाए।

  • फंक्शन कॉल में स्ट्रक्चर वेरिएबल का नाम तर्क के रूप में दिया जाता है।

  • इसे फ़ंक्शन हेडर में किसी अन्य संरचना चर में एकत्र किया जाता है।

  • नुकसान यह है कि स्मृति को बर्बाद करके एक संपूर्ण संरचना की प्रतिलिपि फिर से बनाई जाती है।

उदाहरण

निम्नलिखित कार्यक्रम दिखाता है कि कार्य करने के लिए एक तर्क के रूप में एक संपूर्ण संरचना को कैसे पारित किया जाए।

#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

  1. मैं टिंकर में किसी फ़ंक्शन में एंटर कुंजी कैसे बांधूं?

    एक कुंजी दबाने और कुंजी के साथ कुछ संचालन को संभालने एक ऐसी घटना है जिसे एक बटन के माध्यम से ट्रिगर किया जा सकता है। हम बाइंडिंग . का उपयोग करके मुख्य ईवेंट को बाइंड कर सकते हैं टिंकर एप्लिकेशन में विधि। जब भी कुंजी को ट्रिगर किया जाएगा, यह एक हैंडलर को कॉल करेगा जो कि कुंजी ईवेंट के लिए विशिष्ट ऑप

  1. कैसे अजगर समारोह में तर्क के रूप में एक शब्दकोश पारित करने के लिए?

    नीचे दिए गए कोड में हम दिए गए डिक्शनरी को एक पायथन फंक्शन के तर्क के रूप में पास करते हैं और फिर उस फंक्शन को कॉल करते हैं जो की/वैल्यू पेयर पर काम करता है और उसी के अनुसार परिणाम देता है उदाहरण d = {'a' : 1, 'b' : 2, 'c' : 3} def f(dict):     for k, v in dict.iter

  1. फ़ंक्शन तर्क के रूप में पायथन फ़ंक्शन को कैसे पास करें?

    पायथन निम्नलिखित विधि को लागू करता है जहां पहला पैरामीटर एक फ़ंक्शन है - map(function, iterable, ...) - चलने योग्य के प्रत्येक आइटम पर फ़ंक्शन लागू करें और परिणामों की एक सूची लौटाएं। हम कस्टम फ़ंक्शंस भी लिख सकते हैं जहाँ हम एक फ़ंक्शन को एक तर्क के रूप में पास कर सकते हैं। हम मानचित्र विधि का उप