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

C में स्ट्रक्चर में फ्लेक्सिबल ऐरे मेंबर्स


C में स्ट्रक्चर में फ्लेक्सिबल ऐरे मेंबर्स का मतलब है कि हम स्ट्रक्चर के भीतर बिना डायमेंशन के ऐरे घोषित कर सकते हैं और इसका आकार प्रकृति में लचीला होगा। फ्लेक्सिबल ऐरे मेंबर क्लास का अंतिम सदस्य होना चाहिए।

उदाहरण

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// एम्प्लॉई टाइप का स्ट्रक्चर और इसमें फ्लेक्सिबल ऐरे मेंबर के अलावा कम से कम एक और नामित मेंबर होना चाहिए।
struct employee {
    int emp_id;
    int name_len;
    int emp_size; // 'emp_size' वेरिएबल का उपयोग फ्लेक्सिबल कैरेक्टर ऐरे emp_name[] का आकार स्टोर करने के लिए किया जाता है।
    char emp_name[]; // फ्लेक्सिबल ऐरे मेंबर emp_name[] क्लास का अंतिम सदस्य होना चाहिए।
};

struct employee *createEmployee(struct employee *e, int id, char a[]) {
    e = (struct employee *)malloc(sizeof(*e) + sizeof(char) * strlen(a)); // मेमोरी आवंटन
    e->emp_id = id;
    e->name_len = strlen(a);
    // यूजर द्वारा प्रदान किए गए ऐरे a[] की कॉपी के आकार के अनुसार आकार असाइन करना।
    strcpy(e->emp_name, a);
    return e;
}

void printEmployee(struct employee *e) // कर्मचारी का विवरण प्रिंट करें।
{
    printf("Employee_id : %d\nEmployee Name : %s\nName Length: %d\n\n", e->emp_id, e->emp_name, e->name_len);
}

int main() {
    struct employee *e1 = createEmployee(e1, 26, "Ram");
    struct employee *e2 = createEmployee(e2, 53, "Madhu");
    printEmployee(e1);
    printEmployee(e2);
    printf("Size of structure Employee: %lu\n", sizeof(struct employee));
    return 0;
}

आउटपुट

Employee_id : 26
Employee Name : Ram
Name Length: 3

Employee_id : 53
Employee Name : Madhu
Name Length: 5

Size of structure Employee: 12
  1. डेटा संरचना में सरणियों की सरणी प्रतिनिधित्व (Array of Arrays Representation) डेटा संरचना में सरणियों की सरणी प्रतिनिधित्व (Array of Arrays Representation)

    इस अनुभाग में हम बहुआयामी सरणियों के एक अन्य प्रतिनिधित्व को देखेंगे। यहाँ हम सरणियों की सरणी (Array of Arrays) प्रतिनिधित्व देखेंगे। इस रूप में, हमारे पास एक सरणी होती है जो कई सरणियों के प्रारंभिक पतों (starting addresses) को रखती है। प्रतिनिधित्व नीचे जैसा दिखेगा: यह आकार [7 x 8] का एक द्वि-आय

  1. - डेटा संरचना में सरणी दोहरीकरण (Array Doubling)

    कभी-कभी हम डायनामिक मेमोरी आवंटन का उपयोग करके सरणी बनाते हैं। यदि सरणी डायनामिक मेमोरी आवंटन तकनीक का उपयोग करके आवंटित की गई है, तो हम कुछ संक्रियाएँ करके सरणी का आकार दोगुना कर सकते हैं। मान लीजिए प्रारंभिक सरणी का आकार 5 था। सरणी 01234 तत्व 1तत्व 2तत्व 3तत्व 4तत्व 5 सरणी दोहरीकरण के ब

  1. डेटा संरचना में एकल सरणी में एकाधिक सूचियाँ (Multiple Lists in a Single Array) डेटा संरचना में एकल सरणी में एकाधिक सूचियाँ (Multiple Lists in a Single Array)

    सरणी प्रतिनिधित्व मूल रूप से स्थान की बर्बादी है जब यह डेटा संग्रहीत कर रहा है जो समय के साथ बदल जाएगा। कुछ डेटा संग्रहीत करने के लिए, हम कुछ स्थान आवंटित करते हैं जो एक सरणी में कई मानों को संग्रहीत करने के लिए पर्याप्त बड़ा हो। मान लीजिए हम सरणी दोहरीकरण मानदंड (array doubling criteria) का उपयोग