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

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


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

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

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

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

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

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

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

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

उदाहरण

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

#include <stdio.h>

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

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

int main() {
    struct date d;
    printf("दिन, महीना और वर्ष दर्ज करें: ");
    scanf("%d%s%d", &d.day, d.month, &d.year);
    display(d); // संपूर्ण स्ट्रक्चर को फंक्शन में आर्गुमेंट के रूप में पास करना
    return 0;
}

आउटपुट

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

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

उदाहरण 2

एक और उदाहरण पर विचार करें, जिसमें संपूर्ण स्ट्रक्चर को फंक्शन में आर्गुमेंट के रूप में पास करने को समझाया गया है।

#include <stdio.h>

// स्ट्रक्चर घोषित करना
struct add {
    int var1;
    int var2;
} a;

// फंक्शन घोषित करना और वापस करना
void show(struct add a) {
    int sum;
    sum = a.var1 + a.var2;
    printf("जोड़ा गया मान %d है", sum);
}

void main() {
    struct add a;
    printf("वेरिएबल 1 दर्ज करें = ");
    scanf("%d", &a.var1);
    printf("वेरिएबल 2 दर्ज करें = ");
    scanf("%d", &a.var2);
    show(a); // फंक्शन कॉल करना
}

आउटपुट

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

वेरिएबल 1 दर्ज करें = 20
वेरिएबल 2 दर्ज करें = 50
जोड़ा गया मान 70 है

उदाहरण 3

एक और C प्रोग्राम जो संपूर्ण स्ट्रक्चर को फंक्शन में आर्गुमेंट के रूप में पास करने को दर्शाता है:

#include <stdio.h>

// स्ट्रक्चर घोषित करना
struct student {
    int s1, s2, s3;
} s[5];

// फंक्शन घोषित करना और वापस करना
void addition(struct student s[]) {
    int i, sum;
    for (i = 1; i < 4; i++) {
        sum = s[i].s1 + s[i].s2 + s[i].s3;
        printf("छात्र %d ने कुल %d अंक प्राप्त किए\n", i, sum);
    }
}

void main() {
    int i;
    for (i = 1; i < 4; i++) {
        printf("छात्र %d के विषय 1 के अंक दर्ज करें = ", i);
        scanf("%d", &s[i].s1);
        printf("छात्र %d के विषय 2 के अंक दर्ज करें = ", i);
        scanf("%d", &s[i].s2);
        printf("छात्र %d के विषय 3 के अंक दर्ज करें = ", i);
        scanf("%d", &s[i].s3);
    }
    addition(s); // फंक्शन कॉल करना
}

आउटपुट

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

छात्र 1 के विषय 1 के अंक दर्ज करें = 25
छात्र 1 के विषय 2 के अंक दर्ज करें = 89
छात्र 1 के विषय 3 के अंक दर्ज करें = 45
छात्र 2 के विषय 1 के अंक दर्ज करें = 12
छात्र 2 के विषय 2 के अंक दर्ज करें = 45
छात्र 2 के विषय 3 के अंक दर्ज करें = 89
छात्र 3 के विषय 1 के अंक दर्ज करें = 12
छात्र 3 के विषय 2 के अंक दर्ज करें = 78
छात्र 3 के विषय 3 के अंक दर्ज करें = 12
छात्र 1 ने कुल 159 अंक प्राप्त किए
छात्र 2 ने कुल 146 अंक प्राप्त किए
छात्र 3 ने कुल 102 अंक प्राप्त किए

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

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

  1. - पायथन फंक्शन में डिक्शनरी को आर्गुमेंट के रूप में कैसे पास करें?

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

  1. - पायथन फंक्शन को फंक्शन आर्गुमेंट के रूप में कैसे पास करें?

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