स्ट्रक्चर का पॉइंटर संपूर्ण स्ट्रक्चर का पता रखता है।
इसका उपयोग लिंक्ड लिस्ट, ट्री, ग्राफ आदि जैसे जटिल डेटा स्ट्रक्चर्स बनाने के लिए किया जाता है।
स्ट्रक्चर के मेंबर्स को एक विशेष ऑपरेटर जिसे एरो ऑपरेटर (->) कहा जाता है, का उपयोग करके एक्सेस किया जा सकता है।
घोषणा
C प्रोग्रामिंग में स्ट्रक्चर्स के पॉइंटर्स के लिए घोषणा निम्नलिखित है:
struct tagname *ptr;
उदाहरण: struct student *s;
एक्सेस करना
स्ट्रक्चर्स के पॉइंटर्स को कैसे एक्सेस करें, यह नीचे समझाया गया है:
ptr->membername;
उदाहरण: s->sno, s->sname, s->marks;
उदाहरण
निम्नलिखित C प्रोग्राम C प्रोग्रामिंग में स्ट्रक्चर की डायनामिक मेमोरी एलोकेशन को समझाता है:
#include <stdio.h>
#include <stdlib.h>
struct person {
int age;
float weight;
char name[30];
};
int main() {
struct person *ptr;
int i, n;
printf("व्यक्तियों की संख्या दर्ज करें: ");
scanf("%d", &n);
// n संख्या के struct person के लिए मेमोरी एलोकेट करना
ptr = (struct person*) malloc(n * sizeof(struct person));
for (i = 0; i < n; ++i) {
printf("नाम और उम्र क्रमशः दर्ज करें: ");
// पहले struct person के मेंबर्स को एक्सेस करने के लिए,
// ptr->name और ptr->age का उपयोग किया जाता है
// दूसरे struct person के मेंबर्स को एक्सेस करने के लिए,
// (ptr+1)->name और (ptr+1)->age का उपयोग किया जाता है
scanf("%s %d", (ptr+i)->name, &(ptr+i)->age);
}
printf("जानकारी प्रदर्शित:\n");
for (i = 0; i < n; ++i)
printf("Name: %s\tAge: %d\n", (ptr+i)->name, (ptr+i)->age);
return 0;
}
आउटपुट
उपरोक्त प्रोग्राम को निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है:
व्यक्तियों की संख्या दर्ज करें: 1 नाम और उम्र क्रमशः दर्ज करें: bhanu 24 जानकारी प्रदर्शित: Name: bhanu Age: 24
उदाहरण 2
पॉइंटर्स और स्ट्रक्चर्स पर एक और उदाहरण पर विचार करें, जिसमें पॉइंटर्स और स्ट्रक्चर्स को दर्शाने वाला C प्रोग्राम दिया गया है।
#include <stdio.h>
// बाहरी और आंतरिक स्ट्रक्चर्स घोषित करना
struct Manager {
char Name[15];
int Age;
char Gender;
float Level;
char Role[50];
char temp;
} m[20];
void main() {
int i;
struct Manager *p;
// पॉइंटर परिभाषित करना
p = &m;
// यूजर इनपुट पढ़ना
for (i = 1; i < 3; i++) { // 2 मैनेजर्स का डेटा स्वीकार करने के लिए फंक्शन घोषित करना
printf("मैनेजर %d का नाम दर्ज करें: ", i);
gets(p->Name);
printf("मैनेजर %d की उम्र दर्ज करें: ", i);
scanf("%d", &p->Age);
scanf("%c", &p->temp); // बफर क्लियर करना
printf("मैनेजर %d का जेंडर दर्ज करें: ", i);
scanf("%c", &p->Gender);
printf("मैनेजर %d का स्तर दर्ज करें: ", i);
scanf("%f", &p->Level);
scanf("%c", &p->temp); // बफर क्लियर करना
printf("मैनेजर %d की भूमिका दर्ज करें: ", i);
gets(p->Role);
p++;
}
// आउटपुट प्रिंट करने के लिए पॉइंटर को फिर से परिभाषित करना
p = &m;
// आउटपुट प्रिंट करना
for (i = 1; i < 3; i++) {
printf("मैनेजर %d का नाम है: %s\n", i, p->Name);
printf("मैनेजर %d की उम्र है: %d\n", i, p->Age);
printf("मैनेजर %d का जेंडर है: %c\n", i, p->Gender);
printf("मैनेजर %d का स्तर है: %f\n", i, p->Level);
printf("मैनेजर %d की भूमिका है: %s\n", i, p->Role);
p++;
}
}
आउटपुट
उपरोक्त प्रोग्राम को निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है:
मैनेजर 1 का नाम दर्ज करें: Hari मैनेजर 1 की उम्र दर्ज करें: 55 मैनेजर 1 का जेंडर दर्ज करें: M मैनेजर 1 का स्तर दर्ज करें: 2 मैनेजर 1 की भूमिका दर्ज करें: Senior मैनेजर 2 का नाम दर्ज करें: Bob मैनेजर 2 की उम्र दर्ज करें: 60 मैनेजर 2 का जेंडर दर्ज करें: M मैनेजर 2 का स्तर दर्ज करें: 1 मैनेजर 2 की भूमिका दर्ज करें: CEO मैनेजर 1 का नाम है: Hari मैनेजर 1 की उम्र है: 55 मैनेजर 1 का जेंडर है: M मैनेजर 1 का स्तर है: 2.000000 मैनेजर 1 की भूमिका है: Senior मैनेजर 2 का नाम है: Bob मैनेजर 2 की उम्र है: 60 मैनेजर 2 का जेंडर है: M मैनेजर 2 का स्तर है: 1.000000 मैनेजर 2 की भूमिका है: CEO