संरचना का सूचक एक संपूर्ण संरचना का पता रखता है।
मुख्य रूप से, इनका उपयोग जटिल डेटा संरचनाओं जैसे लिंक्ड सूचियों, पेड़ों, ग्राफ़ आदि को बनाने के लिए किया जाता है।
एरो ऑपरेटर ( -> ) नामक एक विशेष ऑपरेटर का उपयोग करके संरचना के सदस्यों तक पहुँचा जा सकता है।
घोषणा
पॉइंटर टू स्ट्रक्चर की घोषणा निम्नलिखित है -
struct tagname *ptr;
उदाहरण के लिए, स्ट्रक्चर स्टूडेंट *s;
एक्सेस करना
आप निम्न का उपयोग करके पॉइंटर से संरचना तक पहुंच सकते हैं -
Ptr-> membername;
उदाहरण के लिए, s->sno, s->sname, s->marks;
उदाहरण
पॉइंटर को संरचना तक पहुँचाने के लिए C प्रोग्राम निम्नलिखित है -
#include<stdio.h> struct classroom{ int students[7]; }; int main(){ struct classroom clr = {2, 3, 5, 7, 11, 13}; int *ptr; ptr = (int *)&clr; printf("%d",*(ptr + 4)); return 0; }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
11
स्पष्टीकरण
यहाँ, एक सूचक चर ptr ऑब्जेक्ट clr के पहले मान 2 का पता रखता है। फिर, पॉइंटर वेरिएबल का पता 4 से बढ़ा दिया जाता है और अंत में, मान प्रदर्शित होता है।
उदाहरण के लिए,
*(ptr + 0) = 2 *(ptr + 1) = 3 *(ptr + 2) = 5 *(ptr + 3) = 7 *(ptr + 4) = 11 *(ptr + 5) = 13
संरचनाओं के सूचक के बारे में जानने के लिए एक और सरल उदाहरण पर विचार करें -
उदाहरण
struct student{ int sno; char sname[30]; float marks; }; main ( ){ struct student s; struct student *st; printf("enter sno, sname, marks :"); scanf ("%d%s%f", & s.sno, s.sname, &s. marks); st = &s; printf ("details of the student are\n"); printf ("Number = %d\n", st ->sno); printf ("name = %s\n", st->sname); printf ("marks =%f", st->marks); getch ( ); }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
enter sno, sname, marks :1 bhanu 69 details of the student are Number = 1 name = bhanu marks =69.000000