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

C में स्ट्रक्चर के पते को फंक्शन में आर्गुमेंट के रूप में कैसे पास करें?


स्ट्रक्चर के मानों को एक फंक्शन से दूसरे में ट्रांसफर करने के तीन तरीके हैं:

  • व्यक्तिगत मेंबर्स को फंक्शन में आर्गुमेंट्स के रूप में पास करना।

  • पूरे स्ट्रक्चर को फंक्शन में आर्गुमेंट के रूप में पास करना।

  • स्ट्रक्चर के पते को फंक्शन में आर्गुमेंट के रूप में पास करना।

अब, आइए समझते हैं कि स्ट्रक्चर के पते को फंक्शन में आर्गुमेंट के रूप में कैसे पास किया जाता है।

  • स्ट्रक्चर का पता फंक्शन को आर्गुमेंट के रूप में पास किया जाता है।

  • इसे फंक्शन हेडर में स्ट्रक्चर के पॉइंटर में एकत्र किया जाता है।

लाभ

स्ट्रक्चर के पते को फंक्शन में आर्गुमेंट के रूप में पास करने के लाभ निम्नलिखित हैं:

  • कोई मेमोरी बर्बाद नहीं होती क्योंकि कॉपी बनाने की आवश्यकता नहीं होती।

  • मान वापस करने की आवश्यकता नहीं होती, क्योंकि फंक्शन अप्रत्यक्ष रूप से पूरे स्ट्रक्चर को एक्सेस कर सकता है और उस पर काम कर सकता है।

उदाहरण

निम्नलिखित प्रोग्राम दर्शाता है कि स्ट्रक्चर के पते को फंक्शन में आर्गुमेंट के रूप में कैसे पास किया जाता है:

#include <stdio.h>

struct date {
    int day;
    char month[10];
    int year;
};

void display(struct date *p) {
    printf("day=%d\n", p->day);
    printf("month=%s\n", p->month);
    printf("year=%d\n", p->year);
}

int main() {
    struct date d;
    printf("दिन, महीना और वर्ष दर्ज करें: ");
    scanf("%d%s%d", &d.day, d.month, &d.year);
    display(&d);
    return 0;
}

आउटपुट

उपरोक्त प्रोग्राम को निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है:

दिन, महीना और वर्ष दर्ज करें: 20 MAR 2021
day=20
month=MAR
year=2021

उदाहरण 2

नीचे दिया गया C प्रोग्राम स्ट्रक्चर और फंक्शन्स को संपूर्ण फंक्शन को आर्गुमेंट के रूप में कॉल करके प्रदर्शित करता है। इस कॉलिंग विधि के कारण, मेमोरी की कोई बर्बादी नहीं होती, क्योंकि हमें फिर से कॉपी करने और मान वापस करने की आवश्यकता नहीं होती।

#include <stdio.h>

// स्ट्रक्चर घोषित करना
struct student {
    char Name[100];
    int Age;
    float Level;
    char Grade[50];
    char temp;
} s[5];

// फंक्शन घोषित करना और वापस करना
void show(struct student *p) {
    int i;
    for (i = 1; i < 3; i++) {
        printf("छात्र %d का नाम है: %s\n", i, p->Name);
        printf("छात्र %d की उम्र है: %d\n", i, p->Age);
        printf("छात्र %d का स्तर है: %f\n", i, p->Level);
        printf("छात्र %d की ग्रेड है: %s\n", i, p->Grade);
        p++;
    }
}

void main() {
    int i;
    struct student *p;
    
    // यूजर इनपुट पढ़ना
    for (i = 0; i < 2; i++) {
        printf("छात्र %d का नाम दर्ज करें: ", i+1);
        gets(s[i].Name);
        printf("छात्र %d की उम्र दर्ज करें: ", i+1);
        scanf("%d", &s[i].Age);
        printf("छात्र %d का स्तर दर्ज करें: ", i+1);
        scanf("%f", &s[i].Level);
        scanf("%c", &s[i].temp); // बफर क्लियर करना
        printf("छात्र %d की ग्रेड दर्ज करें: ", i+1);
        gets(s[i].Grade);
    }
    
    // स्ट्रक्चर को पॉइंटर असाइन करना
    p = &s;
    
    // फंक्शन कॉल करना
    show(&s);
}

आउटपुट

उपरोक्त प्रोग्राम को निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है:

छात्र 1 का नाम दर्ज करें: Lucky
छात्र 1 की उम्र दर्ज करें: 27
छात्र 1 का स्तर दर्ज करें: 2
छात्र 1 की ग्रेड दर्ज करें: A
छात्र 2 का नाम दर्ज करें: Pinky
छात्र 2 की उम्र दर्ज करें: 29
छात्र 2 का स्तर दर्ज करें: 1
छात्र 2 की ग्रेड दर्ज करें: B
छात्र 1 का नाम है: Lucky
छात्र 1 की उम्र है: 27
छात्र 1 का स्तर है: 2.000000
छात्र 1 की ग्रेड है: A
छात्र 2 का नाम है: Pinky
छात्र 2 की उम्र है: 29
छात्र 2 का स्तर है: 1.000000
छात्र 2 की ग्रेड है: B

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

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

  1. Tkinter में एंटर की को फंक्शन से कैसे बाइंड करें? Tkinter में एंटर की को फंक्शन से कैसे बाइंड करें?

    एक की दबाना और उस की के साथ कुछ ऑपरेशन हैंडल करना एक इवेंट है जिसे बटन के माध्यम से ट्रिगर किया जा सकता है। हम tkinter एप्लिकेशन में Binding मेथड का उपयोग करके की इवेंट को बाइंड कर सकते हैं। जब भी की ट्रिगर होगी, यह एक हैंडलर को कॉल करेगी जो उस की इवेंट के लिए विशिष्ट ऑपरेशन उठाएगी। यदि हम bind फंक

  1. अपने विंडोज 11 पीसी का IP एड्रेस ढूंढें: चरण-दर-चरण गाइड अपने विंडोज 11 पीसी का IP एड्रेस ढूंढें: चरण-दर-चरण गाइड

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