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

C भाषा में स्थानीय स्कोप (Local Scope) में स्ट्रक्चर प्रोग्राम


स्ट्रक्चर (Structure) क्या है?

स्ट्रक्चर विभिन्न डेटा प्रकारों के चरों का संग्रह है जिन्हें एक ही नाम के तहत समूहित किया जाता है। यह संबंधित डेटा को एक इकाई के रूप में व्यवस्थित करता है।

स्ट्रक्चर की विशेषताएं

  • असाइनमेंट ऑपरेटर (=) से पूरी स्ट्रक्चर कॉपी की जा सकती है।
  • नेस्टेड स्ट्रक्चर (स्ट्रक्चर के अंदर स्ट्रक्चर) जटिल डेटा के लिए उपयोगी।
  • पूरी स्ट्रक्चर, व्यक्तिगत सदस्य, या पता फंक्शन में पास किया जा सकता है।
  • स्ट्रक्चर पॉइंटर बनाए जा सकते हैं।

घोषणा सिंटैक्स


struct टैग_नाम {
    डेटा_प्रकार सदस्य1;
    डेटा_प्रकार सदस्य2;
    // ...
};

// उदाहरण
struct Book {
    int pages;
    char author[30];
    float price;
};

लोकल स्कोप में स्ट्रक्चर

स्ट्रक्चर को फंक्शन के अंदर (लोकल स्कोप) घोषित किया जा सकता है, जिससे उसकी दृश्यता केवल उस फंक्शन तक सीमित रहती है।

उदाहरण प्रोग्राम: लोकल स्कोप स्ट्रक्चर

#include <stdio.h>

// ग्लोबल स्ट्रक्चर (फाइल स्कोप)
struct {
    char name[20];
    int age;
    int salary;
    char add[30];
} emp1, emp2;

// फंक्शन में लोकल स्ट्रक्चर
int manager() {
    struct {
        char name[20];
        int age;
        int salary;
        char add[50];
    } manager;
    
    manager.age = 27;
    if (manager.age > 30)
        manager.salary = 65000;
    else
        manager.salary = 55000;
    
    return manager.salary;
}

int main() {
    // ग्लोबल स्ट्रक्चर चरों का उपयोग
    printf("emp1 नाम: ");
    scanf("%19s", emp1.name);
    printf("emp1 पता: ");
    scanf("%29s", emp1.add);
    printf("emp1 वेतन: ");
    scanf("%d", &emp1.salary);
    
    printf("emp2 नाम: ");
    scanf("%19s", emp2.name);
    printf("emp2 पता: ");
    scanf("%29s", emp2.add);
    printf("emp2 वेतन: ");
    scanf("%d", &emp2.salary);
    
    printf("\nemp1 वेतन: %d", emp1.salary);
    printf("\nemp2 वेतन: %d", emp2.salary);
    printf("\nमैनेजर वेतन: %d\n", manager());
    
    return 0;
}

आउटपुट उदाहरण

emp1 नाम: Hari
emp1 पता: Hyderabad
emp1 वेतन: 4000
emp2 नाम: Lucky
emp2 पता: Chennai
emp2 वेतन: 5000

emp1 वेतन: 4000
emp2 वेतन: 5000
मैनेजर वेतन: 55000

स्कोप नियम सारांश

घोषणा स्थानस्कोपजीवनकाल
फाइल स्तर (सभी फंक्शन के बाहर)पूरी फाइल (ग्लोबल)प्रोग्राम अवधि
फंक्शन के अंदर (ब्लॉक)केवल उस ब्लॉक मेंब्लॉक निष्पादन तक
फंक्शन पैरामीटर मेंफंक्शन बॉडीफंक्शन कॉल अवधि

बेहतर अभ्यास: typedef उपयोग करें


// हेडर फाइल या फाइल शीर्ष पर
typedef struct {
    char name[50];
    int id;
    float salary;
} Employee;

// उपयोग
Employee emp1, emp2;
Employee *ptr = &emp1;

typedef से struct कीवर्ड बार-बार लिखने की जरूरत नहीं पड़ती और कोड पठनीय होता है।

  1. C भाषा में संरचना अवधारणा का उपयोग करके बिट फ़ील्ड की व्याख्या C भाषा में संरचना अवधारणा का उपयोग करके बिट फ़ील्ड की व्याख्या

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

  1. - C में fwrite() और fread() का उपयोग करके स्ट्रक्चर को फाइल में पढ़ना/लिखना

    C में फाइल में लिखने के लिए fwrite() और fread() का उपयोग किया जाता है। fwrite() सिंटैक्स fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) जहां ptr - लिखे जाने वाले एलिमेंट्स की सरणी का पॉइंटर size - लिखे जाने वाले प्रत्येक एलिमेंट का आकार बाइट्स में nmemb - एलिमेंट्स की संख्या, प्

  1. - C# प्रोग्राम: रिकर्सन का उपयोग करके फैक्टोरियल की गणना करें

    नीचे दिए गए उदाहरण में रिकर्सिव फंक्शन checkFact() का उपयोग करके किसी संख्या का फैक्टोरियल ज्ञात किया जा रहा है:यदि मान 1 है, तो यह 1 लौटाता है क्योंकि फैक्टोरियल 1 है:if (n == 1) return 1;यदि नहीं, तो रिकर्सिव फंक्शन निम्न इटरेशन्स के लिए कॉल किया जाएगा यदि आप 5! का मान चाहते हैं:Iteration1: 5 * ch