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);
   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

  1. टिंकर में इवेंट हैंडलर को तर्क कैसे पास करें?

    ज्यादातर स्थितियों में, कॉलबैक फ़ंक्शन को इंस्टेंस विधि के रूप में संदर्भित किया जा सकता है। एक इंस्टेंस विधि अपने सभी सदस्यों तक पहुँचती है और बिना किसी तर्क को निर्दिष्ट किए उनके साथ संचालन करती है। आइए एक मामले पर विचार करें जहां एक से अधिक घटक परिभाषित हैं और हम उन घटकों के साथ कुछ घटनाओं को सं

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

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

  1. Windows 11 PC में IP पता कैसे खोजें

    आपके इंटरनेट कनेक्शन में कुछ गड़बड़ है? जब आप विभिन्न समाधानों के साथ अपना हाथ आजमा रहे हैं, तो आपके कंप्यूटर का आईपी पता जानना आपके काम आ सकता है। अशिक्षित के लिए, एक आईपी पता, इंटरनेट प्रोटोकॉल पते के लिए संक्षिप्त, एक अद्वितीय संख्यात्मक पता है जो इंटरनेट पर आपके डिवाइस की पहचान करता है। आप इसे