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

C में स्ट्रक्चर के इंडिविजुअल मेंबर्स को फंक्शन आर्गुमेंट्स के रूप में पास करना

इंडिविजुअल मेंबर्स पास करना

  • प्रत्येक मेंबर को फंक्शन कॉल में अलग-अलग आर्गुमेंट के रूप में पास किया जाता है।
  • फंक्शन हेडर में साधारण वेरिएबल्स में रिसीव होते हैं।

प्रोग्राम उदाहरण

#include <stdio.h>

struct student {
    int s1, s2, s3;
} s[5];

void addition(int a, int b, int c) {
    int i, sum;
    for(i = 1; i < 4; i++) {
        sum = a + b + c;
        printf("Student %d scored total of %d\n", i, sum);
    }
}

int main() {
    int i;
    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);
    }
    // नोट: मूल कोड में सिंटैक्स एरर था, सही कॉल:
    addition(s[1].s1, s[1].s2, s[1].s3);
    return 0;
}

आउटपुट (संशोधित)

Enter marks for student 1 in subject 1 = 10
Enter marks for student 1 in subject 2 = 20
Enter marks for student 1 in subject 3 = 30
...
Student 1 scored total of 60
Student 2 scored total of 60
Student 3 scored total of 60

महत्वपूर्ण नोट

मूल कोड में फंक्शन कॉल addition(s[].s1, s[].s2, s[].s3) अमान्य सिंटैक्स है। सही तरीका प्रत्येक स्टूडेंट के लिए अलग कॉल करना या ऐरे पास करना है।

तुलना

पैरामीटरपूरा स्ट्रक्चर पास करनाइंडिविजुअल मेंबर्स पास करना
सिंटैक्सfunc(struct_var) या func(&struct_var)func(s.m1, s.m2, ...)
फंक्शन पैरामीटरstruct tagname या struct tagname*साधारण वेरिएबल्स
मेमोरीकॉपी बन सकती है (वैल्यू पास) या रेफरेंसकेवल मान पास होते हैं
लचीलापनपूरा स्ट्रक्चर उपलब्धकेवल चुने हुए मेंबर्स
  1. C भाषा में संरचना अवधारणा का उपयोग करके बिट फ़ील्ड की व्याख्या C भाषा में संरचना अवधारणा का उपयोग करके बिट फ़ील्ड की व्याख्या

    बिट फ़ील्ड का उपयोग वेरिएबल के आकार को बिट्स के संदर्भ में निर्दिष्ट करने के लिए किया जाता है। आमतौर पर, इसे एक संरचना के अंदर परिभाषित किया जाता है। बिट फ़ील्ड: 1 बाइट = 8 बिट्स उदाहरण के लिए, नीचे एक उदाहरण समझाया गया है: Struct info{ int x:2; }; यहां, x 2 बिट्स पर कब्जा करता है। बिट फ़ील

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

    पायथन में, फंक्शन आर्गुमेंट्स हमेशा रेफरेंस द्वारा पास किए जाते हैं। इसे id() की जांच करके सत्यापित किया जा सकता है। उदाहरण def foo(x): print(id of received argument, id(x)) x.append(20) return x a = [10] print(id of argument before calling function, id(a)) b = foo(a) print(id of return

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

    दिए गए कोड के लिए आउटपुट निम्नानुसार है: b = 30 a = [10] इस मामले में, a वैल्यू द्वारा पास किया हुआ लगता है, क्योंकि फंक्शन कॉल के बाद भी मान अपरिवर्तित रहता है। इसलिए यह स्पष्ट है कि आर्गुमेंट्स पायथन फंक्शन में वैल्यू द्वारा पास किए गए हैं।