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