Suche
Suche Menü

Felder & Zeiger

Wie auch mit normalen Variablen, können mit Strukturen Felder und Zeiger erzeugt werden.

Felder mit Strukturen

Hier wird ein Feld mit 10 Objekten der Struktur erstellt und jeweils das Alter gesetzt und ausgegeben.

typedef struct {
	char name[50];
	int alter;
}sPerson;

sPerson person[10];

int i;
for(i=0; i<10; i++) {
	person[i].alter = 20 + i;
	printf("%d ", person[i].alter);
}

20 21 22 23 24 25 26 27 28 29

Zeiger auf Strukturen

Es können auch Zeiger auf Strukturen erstellt werden. Im folgenden Beispiel gibt die Funktion ausgabePerson() die Daten einer Struktur aus. Die Daten bzw. die Struktur werden mit einem Zeiger übergeben. Die Struktur muss hierbei global deklariert werden, damit die Unterfunktion ausgabePerson() diese auch kennt. In der Funktion ausgabePerson() werden mit den printf Befehlen die Daten name und alter ausgegeben. Betrachten wir den rechten Teil, also den Zugriff auf die Elemente der Struktur über einen Zeiger. Hier sieht man 2 verschiedene Varianten: Die Ausgabe von name mit dem bekannten Stern-Operator, aufgrund der höheren Priorität des Punkt-Operators muss dabei der Zeiger allerdings in Klammern gesetzt werden. Bei der zweiten Variante erfolgt die Ausgabe von der Eigenschaft alter mit dem Pfeil-Operator.

#include<stdio.h>
#include<string.h>

typedef struct {
	char name[50];
	int alter;
}sPerson;

void ausgabePerson(sPerson *person) {
	printf("Name: %s\n", (*person).name);
	printf("Alter: %d\n", person->alter);
}

int main() {
	sPerson kurt;
	strcpy(kurt.name, "Kurt Kanns");
	kurt.alter = 33;
	ausgabePerson(&kurt);
	return 0;
}

Name: Kurt Kanns
Alter: 33