I denne opplæringen lærer du å bruke pekere for å få tilgang til medlemmer av strukturer i C-programmering. Du vil også lære å dynamisk tildele minne av strukturtyper.
Før du lærer om hvordan pekere kan brukes med strukturer, må du sjekke disse opplæringene:
- C Pekere
- C struct
C Pekere til struktur
Slik kan du lage pekere til strukturer.
struct name ( member1; member2;… ); int main() ( struct name *ptr, Harry; )
Her er ptr en pekepinn til struct
.
Eksempel: Få tilgang til medlemmer ved hjelp av Pointer
For å få tilgang til medlemmer av en struktur ved hjelp av pekere, bruker vi ->
operatøren.
#include struct person ( int age; float weight; ); int main() ( struct person *personPtr, person1; personPtr = &person1; printf("Enter age: "); scanf("%d", &personPtr->age); printf("Enter weight: "); scanf("%f", &personPtr->weight); printf("Displaying:"); printf("Age: %d", personPtr->age); printf("weight: %f", personPtr->weight); return 0; )
I dette eksemplet lagres adressen til person1 i personPtr-pekeren ved hjelp av personPtr = &person1;
.
Nå kan du få tilgang til medlemmene av person1 ved hjelp av personPtr
pekeren.
Forresten,
personPtr->age
tilsvarer(*personPtr).age
personPtr->weight
tilsvarer(*personPtr).weight
Dynamisk minnetildeling av strukturer
Før du fortsetter denne delen, anbefaler vi at du sjekker C dynamisk minnetildeling.
Noen ganger kan antall strukturvariabler du erklærte være utilstrekkelig. Du må kanskje tildele minne i løpet av kjøretiden. Slik kan du oppnå dette i C-programmering.
Eksempel: Dynamisk minnetildeling av strukturer
#include #include 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 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:"); for(i = 0; i name, (ptr+i)->age); return 0; )
Når du kjører programmet, vil utdataene være:
Angi antall personer: 2 Angi henholdsvis fornavn og alder: Harry 24 Angi henholdsvis fornavn og alder: Gary 32 Viser informasjon: Navn: Harry Alder: 24 Navn: Gary Alder: 32
I eksemplet ovenfor opprettes n antall strukturvariabler der n blir skrevet inn av brukeren.
For å fordele minnet til n antall strukturerte personer brukte vi,
ptr = (struct person*) malloc(n * sizeof(struct person));
Deretter brukte vi ptr-pekeren for å få tilgang til personelementer.