C-Strukturen und Zeiger
C-Strukturen und Zeiger
In diesem Lernprogramm lernen Sie, Zeiger zu verwenden, um auf Mitglieder von Strukturen in der C-Programmierung zuzugreifen. Sie werden auch lernen, Speicher von Strukturtypen dynamisch zuzuweisen.
Bevor Sie erfahren, wie Zeiger mit Strukturen verwendet werden können, sollten Sie unbedingt diese Tutorials lesen:
- C-Zeiger
- C-Struktur
C-Zeiger auf Struktur
So können Sie Zeiger auf Strukturen erstellen.
struct name {
member1;
member2;
.
.
};
int main()
{
struct name *ptr, Harry;
}
Hier, ptr ist ein Zeiger auf struct
.
Beispiel:Mit Pointer auf Mitglieder zugreifen
Um mit Zeigern auf Mitglieder einer Struktur zuzugreifen, verwenden wir den ->
Betreiber.
#include <stdio.h>
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:\n");
printf("Age: %d\n", personPtr->age);
printf("weight: %f", personPtr->weight);
return 0;
}
In diesem Beispiel die Adresse von person1 wird im personPtr gespeichert Zeiger mit personPtr = &person1;
.
Jetzt können Sie auf die Mitglieder von person1 zugreifen mit dem personPtr
Zeiger.
Übrigens,
personPtr->age
entspricht(*personPtr).age
personPtr->weight
entspricht(*personPtr).weight
Dynamische Speicherzuweisung von Strukturen
Bevor Sie mit diesem Abschnitt fortfahren, empfehlen wir Ihnen, die dynamische Speicherzuweisung von C zu überprüfen.
Manchmal reicht die Anzahl der deklarierten Strukturvariablen möglicherweise nicht aus. Möglicherweise müssen Sie während der Laufzeit Speicher zuweisen. So können Sie dies in der C-Programmierung erreichen.
Beispiel:Dynamische Speicherzuweisung von Strukturen
#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 first 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;
}
Wenn Sie das Programm ausführen, lautet die Ausgabe:
Enter the number of persons: 2 Enter first name and age respectively: Harry 24 Enter first name and age respectively: Gary 32 Displaying Information: Name: Harry Age: 24 Name: Gary Age: 32
Im obigen Beispiel n Anzahl von Struct-Variablen werden erstellt, wobei n wird vom Benutzer eingegeben.
Um den Speicher für n zuzuweisen Anzahl der struct person , wir verwendeten,
ptr = (struct person*) malloc(n * sizeof(struct person));
Dann haben wir den ptr verwendet Zeiger auf Zugriffselemente von person .
C Sprache