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

सी भाषा में संरचना के लिए सूचक के गतिशील स्मृति आवंटन की व्याख्या करें

संरचना का सूचक संपूर्ण संरचना का जोड़ रखता है।

इसका उपयोग जटिल डेटा संरचनाएं जैसे लिंक्ड सूचियां, पेड़, ग्राफ़ इत्यादि बनाने के लिए किया जाता है।

संरचना के सदस्यों को एक विशेष ऑपरेटर का उपयोग करके एक्सेस किया जा सकता है जिसे एरो ऑपरेटर ( -> ) कहा जाता है।

घोषणा

सी प्रोग्रामिंग में पॉइंटर्स टू स्ट्रक्चर्स के लिए घोषणा निम्नलिखित है -

struct tagname *ptr;

उदाहरण के लिए:स्ट्रक्चर स्टूडेंट *s;

एक्सेस करना

यह नीचे बताया गया है कि पॉइंटर्स को संरचनाओं तक कैसे पहुंचा जाए।

Ptr-> membername;

उदाहरण के लिए - s->sno, s->sname, s->marks;

उदाहरण

निम्नलिखित एक सी प्रोग्राम है जो सी प्रोग्रामिंग में संरचना के गतिशील स्मृति आवंटन की व्याख्या करता है -

#include <stdio.h>
#include <stdlib.h>
struct person {
   int age;
   float weight;
   char name[30];
};
int main(){
   struct person *ptr;
   int i, n;
   printf("Enter the number of persons: ");
   scanf("%d", &n);
   // allocating memory for n numbers of struct person
   ptr = (struct person*) malloc(n * sizeof(struct person));
   for(i = 0; i < n; ++i){
      printf("Enter name and age respectively: ");
      // To access members of 1st struct person,
      // ptr->name and ptr->age is used
      // To access members of 2nd struct person,
      // (ptr+1)->name and (ptr+1)->age is used
      scanf("%s %d", (ptr+i)->name, &(ptr+i)->age);
   }
   printf("Displaying Information:\n");
   for(i = 0; i < n; ++i)
      printf("Name: %s\tAge: %d\n", (ptr+i)->name, (ptr+i)->age);
   return 0;
}

आउटपुट

जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Enter the number of persons: 1
Enter name and age respectively: bhanu 24
Displaying Information:
Name: bhanu Age: 24

उदाहरण 2

पॉइंटर्स और स्ट्रक्चर्स पर एक और उदाहरण पर विचार करें, जिसमें पॉइंटर्स और स्ट्रक्चर्स को प्रदर्शित करने के लिए एक सी प्रोग्राम दिया गया है।

#include<stdio.h>
//Declaring outer and inter structures//
struct Manager{
   char Name[15];
   int Age;
   char Gender;
   float Level;
   char Role[50];
   char temp;
}m[20];
void main(){
   //Declaring variable for For loop and pointer variable//
   int i;
   struct Manager *p;
   //Defining Pointer//
   p=&m;
   //Reading User I/p//
   for (i=1;i<3;i++){//Declaring function to accept 2 manager's data//
      printf("Enter the Name of manager %d : ",i);
      gets(p->Name);
      printf("Enter the Age of manager %d : ",i);
      scanf("%d",&p->Age);
      scanf("%c",&p->temp);//Clearing Buffer//
      printf("Enter the Gender of manager %d : ",i);
      scanf("%c",&p->Gender);
      //scanf("%c",&p->temp);//Clearing Buffer//
      printf("Enter the level of manager %d : ",i);
      scanf("%f",&p->Level);
      scanf("%c",&p->temp);//Clearing Buffer//
      printf("Enter the role of manager %d : ",i);
      gets(p->Role);
      p++;
   }
   //Defining Pointer one more time to print output//
   p=&m;
   //Printing O/p//
   for (i=1;i<3;i++){
      printf("The Name of Manager %d is : %s\n",i,p->Name);
      printf("The Age of Manager %d is : %d\n",i,p->Age);
      printf("The Gender of Manager %d is : %c\n",i,p->Gender);
      printf("The Level of Manager %d is : %f\n",i,p->Level);
      printf("The Role of Manager %d is : %s\n",i,p->Role);
      p++;
   }
}

आउटपुट

जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Enter the Name of manager 1 : Hari
Enter the Age of manager 1 : 55
Enter the Gender of manager 1 : M
Enter the level of manager 1 : 2
Enter the role of manager 1 : Senior
Enter the Name of manager 2 : Bob
Enter the Age of manager 2 : 60
Enter the Gender of manager 2 : M
Enter the level of manager 2 : 1
Enter the role of manager 2 : CEO
The Name of Manager 1 is : Hari
The Age of Manager 1 is : 55
The Gender of Manager 1 is : M
The Level of Manager 1 is : 2.000000
The Role of Manager 1 is : Senior
The Name of Manager 2 is : Bob
The Age of Manager 2 is : 60
The Gender of Manager 2 is : M
The Level of Manager 2 is : 1.000000
The Role of Manager 2 is : CEO

  1. C भाषा में कैरेक्टर ऑपरेशंस की व्याख्या करें

    वर्ण (ए-जेड (या) ए-जेड), अंक (0-9), एक सफेद स्थान, या सी प्रोग्रामिंग भाषा में एक विशेष प्रतीक हो सकता है। घोषणा सी प्रोग्रामिंग में कैरेक्टर ऑपरेशंस के लिए घोषणा निम्नलिखित है - char a= ‘A’; using a character constant. चरित्र इनपुट / आउटपुट फ़ंक्शन कैरेक्टर इनपुट/आउटपुट फंक्शन्स को नी

  1. C भाषा में यूनियन टू पॉइंटर को समझाएं

    एक यूनियन को मेमोरी लोकेशन कहा जाता है, जिसे विभिन्न प्रकार के डेटा के कई वेरिएबल द्वारा साझा किया जाता है। सिंटैक्स वाक्य रचना इस प्रकार है - union uniontag{    datatype member 1;    datatype member 2;    ----    ----    datatype member n; }; उदाह

  1. C भाषा में पॉइंटर एक्सेसिंग की अवधारणा की व्याख्या करें

    पॉइंटर एक वेरिएबल है जो दूसरे वेरिएबल के एड्रेस को स्टोर करता है। सूचक घोषणा, आरंभीकरण और पहुंच निम्नलिखित कथन पर विचार करें - int qty = 179; सूचक घोषित करना int *p; p एक पॉइंटर वेरिएबल है जो दूसरे इंटीजर वेरिएबल का पता रखता है। सूचक का प्रारंभ एड्रेस ऑपरेटर (&) का उपयोग पॉइंटर वेरिएबल को इनिशि