Structure pointers in hindi
स्ट्रक्चर डाटा टाइप मेंबर्स के लिए पॉइंटर्स ऑपरेटर का उपयोग आपको डिक्लेअर स्ट्रक्चर के अंदर स्ट्रक्चर डेटा टाइप मेंबर्स को कुशलतापूर्वक हेरफेर करने और स्ट्रक्चर मेंबर को मेमोरी एड्रेस लोकेशन से एक्सेस करने की सुविधा प्रदान करते हैं. स्पेशल्ली जब स्ट्रक्चर में डायनेमिक मेमोरी अलॉटमेंट या फ़ंक्शन को स्ट्रक्चर में पास करना हो।
So let’s use structure to pointer members in C program.
Declare and initialize structure pointers in C program.
स्ट्रक्चर डाटा टाइप वेरिएबल के लिए पॉइंटर डिक्लेअर करने के लिए, आप स्ट्रक्चर कीवर्ड का उपयोग स्ट्रक्चर नाम के बाद और फिर इस स्ट्रक्चर को पॉइंटर के रूप में डिक्लेअर करने के लिए (*) पॉइंटर/आस्ट्रिक ऑपरेटर को यूज़ करते हैं।
Pointer to structure example.
#include <stdio.h>
#include <stdlib.h> // for malloc function to declare dynamic memory in structure
// let Define a employee name structure
struct employee {
char name[50];
int age;
float salary;
};
int main() {
// let Declare a pointer to a employee struct data type
struct employee *employeePtr;
// let Allocate memory for a employee struct with malloc function
employeePtr = (struct employee *) malloc(sizeof(struct employee));
if (employeePtr == NULL) {
fprintf(stderr, “\n employee structure Memory allocation denied”);
return 1;
}
// let Initialize employee structure members through pointer variable
strcpy(employeePtr->name, “david mathew”);
employeePtr->age = 60;
employeePtr->salry = 999.34 ;
// lets Access and print employee structure members through pointer operator
printf(“\n employee Name – %s”, employeePtr->name);
printf(“\n employee Name Age – %d”, employeePtr->age);
printf(“\n employee Name salary – %.f”, employeePtr->salary);
// let Free allocated memory when employee structure members done
free(employeePtr);
return 0;
}
Explanation of the above program.
C Program Structure Definition (struct Employee).
यहाँ एम्प्लॉई नाम से तीन मेंबर् के साथ एक एम्प्लॉई स्ट्रक्चर डाटा को डिफाइन किया गया है. जिसमे एम्प्लॉई स्ट्रक्चर डाटा टाइप में एम्प्लॉई नाम (करैक्टर ऐरे), एम्प्लॉई ऐज (इन्टिजर), और एम्प्लॉई सैलरी (फ्लोटिंग) डाटा टाइप है।
Pointer declaration (struct employee *employeePtr):
यहाँ स्ट्रक्चर को एम्प्लॉईपीटीआर को स्ट्रक्चर एम्प्लॉई के पॉइंटर के रूप में डिक्लेअर किया गया है।
Memory allocation in struct (malloc(sizeof(struct employee))):
मौजूदा स्ट्रक्चर में मैलोक फंक्शन का उपयोग करके स्ट्रक्चर एम्प्लॉई के लिए डायनामिक रूप से मेमोरी को अलॉट करता है। जहा मौजूदा स्ट्रक्चर का आकार साइज़ऑफ़(स्ट्रक्चर एम्प्लॉई) का उपयोग करके डिफाइन करते है।
Error handling in struct.
यहाँ एम्प्लॉई स्ट्रक्चर में यह चेक करता है कि मेमोरी अलॉटमेंट (मैलोक) फंक्शन ऑपरेशन सफल रहा या नहीं। यदि एम्प्लॉईपीटीआर जीरो होता है, तो मेमोरी आवंटन फ़ैल हो गया, और एक एरर इनफार्मेशन डिस्प्ले होता है।
Accessing structure members in C.
स्ट्रक्चर मेंबर्स को पर्सनपीटीआर के माध्यम से तीर (->) स्ट्रक्चर तो पॉइंटर ऑपरेटर का उपयोग करके एक्सेस और स्टार्ट करते है।
Printing structure members in C program.
एम्प्लॉई पर्सनपीटीआर स्ट्रक्चर के माध्यम से स्ट्रक्चर में संग्रहीत वेरिएबल वैल्यू को प्रिंट किया जाता है।
Freeing memory in C struct (free(Employee ptr)).
free() का उपयोग सी स्ट्रक्चर में यूज़ के बाद मेमोरी लीक को रोकने के लिए फ्री फंक्शन का उपयोग करके प्रोग्राम अलॉट मेमोरी को फ्री किया जाता है।
C structure pointers additional use.
Passing structure pointer to function – याद रखे की सी स्ट्रक्चर पॉइंटर्स ऑपरेटर का उपयोग आमतौर पर स्ट्रक्चर डाटा टाइप वेरिएबल वैल्यू को मेमोरी एड्रेस से फ़ंक्शन में कुशलतापूर्वक पास करा जाता है.
void printemployee(struct employee *ptr) {
printf(“\n employee Name – %s”, ptr->name);
printf(“\n employee Age – %d”, ptr->age);
printf(“\n employee salary – %.f”, ptr->salary);
}
/ employee pointer use.
printemployee(employeePtr);
Structure Dynamic Memory Allocation – सी स्ट्रक्चर प्रोग्राम में मेमोरी को कुशलतापूर्वक मैनेज करने के लिए डायनेमिक मेमोरी एलोकेशन (malloc(), calloc(), realloc()) फंक्शन को प्रोसेस के लिए स्ट्रक्चर पॉइंटर्स उपयोग होते हैं।
Nested Structures – नेस्टेड स्ट्रक्चर पॉइंटर्स का उपयोग पदानुक्रम के विभिन्न स्तरों पर स्ट्रक्चर डेटा तक पहुँचने और उनमे हेरफेर करने के लिए नेस्टेड स्ट्रक्चर के साथ पॉइंटर का उपयोग किया जाता है।
Key points to remember for pointer to structure data type.
स्ट्रक्चर मेंबर्स को एक्सेस करने के लिए पॉइंटर टू स्ट्रक्चर पॉइंटर्स के साथ एरो (->) ऑपरेटर का उपयोग किया जाता है।
पॉइंटर टू स्ट्रक्चर प्रोग्राम में मेमोरी लीक से बचने के लिए स्ट्रक्चर पॉइंटर्स के साथ काम करते समय मेमोरी को उचित रूप से malloc() मेमोरी अलॉटमेंट और free() मेमोरी फ्री फंक्शन का उपयोग करें।
सी प्रोग्राम में पॉइंटर टू स्ट्रक्चर का प्रभावी ढंग से उपयोग करना समझना सी प्रोग्रामिंग में मौलिक अवधारणा है. विशेष रूप से जहा आपको सी स्ट्रक्चर प्रोग्राम में काम्प्लेक्स डेटा स्ट्रक्चर को मैनेज करने और स्ट्रक्चर मेंबर्स वेरिएबल मेमोरी को डायनामिक रूप से प्रबंधित करने के दौरान पॉइंटर ऑपरेटर का उपयोग करते है।