C-Strukturen und Zeiger (mit Beispielen)

In diesem Tutorial lernen Sie, wie Sie mit Zeigern auf Mitglieder von Strukturen in der C-Programmierung zugreifen. Sie werden auch lernen, Speicher von Strukturtypen dynamisch zuzuweisen.

Bevor Sie erfahren, wie Zeiger mit Strukturen verwendet werden können, lesen Sie unbedingt die folgenden Tutorials:

  • C Zeiger
  • C struct

C Zeiger auf Struktur

So können Sie Zeiger auf Strukturen erstellen.

 struct name ( member1; member2;… ); int main() ( struct name *ptr, Harry; )

Hier ist ptr ein Zeiger auf struct.

Beispiel: Greifen Sie mit dem Zeiger auf Mitglieder zu

Um mit Zeigern auf Mitglieder einer Struktur zuzugreifen, verwenden wir den ->Operator.

 #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; )

In diesem Beispiel wird die Adresse von person1 im personPtr-Zeiger mit gespeichert personPtr = &person1;.

Jetzt können Sie mit dem personPtrZeiger auf die Mitglieder von person1 zugreifen .

Apropos,

  • personPtr->age ist äquivalent zu (*personPtr).age
  • personPtr->weight ist äquivalent zu (*personPtr).weight

Dynamische Speicherzuordnung von Strukturen

Bevor Sie mit diesem Abschnitt fortfahren, empfehlen wir Ihnen, die dynamische Speicherzuordnung von C zu überprüfen.

Manchmal ist die Anzahl der von Ihnen deklarierten Strukturvariablen unzureichend. Möglicherweise müssen Sie zur Laufzeit Speicher zuweisen. So können Sie dies in der C-Programmierung erreichen.

Beispiel: Dynamische Speicherzuordnung von Strukturen

 #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; ) 

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Geben Sie die Anzahl der Personen ein: 2 Geben Sie den Vornamen bzw. das Alter ein: Harry 24 Geben Sie den Vornamen bzw. das Alter ein: Gary 32 Anzeigen von Informationen: Name: Harry Alter: 24 Name: Gary Alter: 32

Im obigen Beispiel werden n Anzahl von Strukturvariablen erstellt, wobei n vom Benutzer eingegeben wird.

Um den Speicher für n Anzahl der Strukturpersonen zuzuweisen, haben wir verwendet:

 ptr = (struct person*) malloc(n * sizeof(struct person));

Dann haben wir den ptr-Zeiger verwendet, um auf Elemente der Person zuzugreifen.

Interessante Beiträge...